Bug 2175200 - python-pydiffx fails to build with Python 3.12: AttributeError: 'DiffXChangeSectionTests' object has no attribute 'assertRaisesRegexp'.
Summary: python-pydiffx fails to build with Python 3.12: AttributeError: 'DiffXChangeS...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-pydiffx
Version: 39
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Orphan Owner
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.12
TreeView+ depends on / blocked
 
Reported: 2023-03-03 14:31 UTC by Tomáš Hrnčiar
Modified: 2023-10-07 03:24 UTC (History)
3 users (show)

Fixed In Version: python-pydiffx-1.1-5.fc40 python-pydiffx-1.1-5.fc39
Clone Of:
Environment:
Last Closed: 2023-09-26 09:53:30 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Tomáš Hrnčiar 2023-03-03 14:31:39 UTC
python-pydiffx fails to build with Python 3.12.0a5.

=================================== FAILURES ===================================
____________ DiffXChangeSectionTests.test_init_with_invalid_options ____________

self = <pydiffx.tests.test_dom_objects.DiffXChangeSectionTests testMethod=test_init_with_invalid_options>

    def test_init_with_invalid_options(self):
        """Testing DiffXChangeSection.__init__ with invalid options"""
        message = '"invalid_option" is not a valid option or content section'
    
>       with self.assertRaisesMessage(DiffXUnknownOptionError, message):

pydiffx/tests/test_dom_objects.py:1235: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXChangeSectionTests testMethod=test_init_with_invalid_options>
exception = <class 'pydiffx.errors.DiffXUnknownOptionError'>
message = '"invalid_option" is not a valid option or content section'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXChangeSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____________ DiffXFileSectionTests.test_init_with_invalid_options _____________

self = <pydiffx.tests.test_dom_objects.DiffXFileSectionTests testMethod=test_init_with_invalid_options>

    def test_init_with_invalid_options(self):
        """Testing DiffXFileSection.__init__ with invalid options"""
        message = '"invalid_option" is not a valid option or content section'
    
>       with self.assertRaisesMessage(DiffXUnknownOptionError, message):

pydiffx/tests/test_dom_objects.py:1603: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileSectionTests testMethod=test_init_with_invalid_options>
exception = <class 'pydiffx.errors.DiffXUnknownOptionError'>
message = '"invalid_option" is not a valid option or content section'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXFileDiffSectionTests.test_content_with_invalid_type ___________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_content_with_invalid_type>

    def test_content_with_invalid_type(self):
        """Testing DiffXFileDiffSection.content with invalid typw"""
>       self.run_invalid_content_type_test(content='test',
                                           expected_type=bytes)

pydiffx/tests/test_dom_objects.py:1907: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:48: in run_invalid_content_type_test
    with self.assertRaisesMessage(TypeError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_content_with_invalid_type>
exception = <class 'TypeError'>
message = "Expected the content to be a <class 'bytes'> type, got <class 'str'> instead"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________ DiffXFileDiffSectionTests.test_encoding_with_invalid_type ___________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_encoding_with_invalid_type>

    def test_encoding_with_invalid_type(self):
        """Testing DiffXFileDiffSection.encoding with invalid type"""
>       self.run_invalid_option_type_test(option_name='encoding',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:1916: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_encoding_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "encoding" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXFileDiffSectionTests.test_init_with_invalid_options ___________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_init_with_invalid_options>

    def test_init_with_invalid_options(self):
        """Testing DiffXFileDiffSection.__init__ with invalid options"""
        message = '"invalid_option" is not a valid option or content section'
    
>       with self.assertRaisesMessage(DiffXUnknownOptionError, message):

pydiffx/tests/test_dom_objects.py:1898: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_init_with_invalid_options>
exception = <class 'pydiffx.errors.DiffXUnknownOptionError'>
message = '"invalid_option" is not a valid option or content section'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________ DiffXFileDiffSectionTests.test_line_endings_with_invalid_type _________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_line_endings_with_invalid_type>

    def test_line_endings_with_invalid_type(self):
        """Testing DiffXFileDiffSection.line_endings with invalid type"""
>       self.run_invalid_option_type_test(option_name='line_endings',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:1937: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_line_endings_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "line_endings" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________ DiffXFileDiffSectionTests.test_line_endings_with_invalid_value ________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_line_endings_with_invalid_value>

    def test_line_endings_with_invalid_value(self):
        """Testing DiffXFileDiffSection.line_endings with invalid value"""
>       self.run_invalid_option_value_test(
            option_name='line_endings',
            value='xxx',
            expected_choices=LineEndings.VALID_VALUES)

pydiffx/tests/test_dom_objects.py:1930: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:79: in run_invalid_option_value_test
    with self.assertRaisesMessage(DiffXOptionValueChoiceError,
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_line_endings_with_invalid_value>
exception = <class 'pydiffx.errors.DiffXOptionValueChoiceError'>
message = '"xxx" is not a supported value for line_endings. Expected one of: dos, unix'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
____________ DiffXFileDiffSectionTests.test_type_with_invalid_type _____________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_type_with_invalid_type>

    def test_type_with_invalid_type(self):
        """Testing DiffXFileDiffSection.type with invalid type"""
>       self.run_invalid_option_type_test(option_name='type',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:1958: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_type_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "type" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
____________ DiffXFileDiffSectionTests.test_type_with_invalid_value ____________

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_type_with_invalid_value>

    def test_type_with_invalid_value(self):
        """Testing DiffXFileDiffSection.type with invalid value"""
>       self.run_invalid_option_value_test(
            option_name='type',
            value='xxx',
            expected_choices=DiffType.VALID_VALUES)

pydiffx/tests/test_dom_objects.py:1951: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:79: in run_invalid_option_value_test
    with self.assertRaisesMessage(DiffXOptionValueChoiceError,
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXFileDiffSectionTests testMethod=test_type_with_invalid_value>
exception = <class 'pydiffx.errors.DiffXOptionValueChoiceError'>
message = '"xxx" is not a supported value for type. Expected one of: binary, text'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXFileDiffSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____________ DiffXMetaSectionTests.test_content_with_invalid_type _____________

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_content_with_invalid_type>

    def test_content_with_invalid_type(self):
        """Testing DiffXMetaSection.content with invalid typw"""
>       self.run_invalid_content_type_test(content='invalid',
                                           expected_type=dict)

pydiffx/tests/test_dom_objects.py:2033: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:48: in run_invalid_content_type_test
    with self.assertRaisesMessage(TypeError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_content_with_invalid_type>
exception = <class 'TypeError'>
message = "Expected the content to be a <class 'dict'> type, got <class 'str'> instead"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXMetaSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
____________ DiffXMetaSectionTests.test_encoding_with_invalid_type _____________

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_encoding_with_invalid_type>

    def test_encoding_with_invalid_type(self):
        """Testing DiffXMetaSection.encoding with invalid type"""
>       self.run_invalid_option_type_test(option_name='encoding',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2042: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_encoding_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "encoding" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXMetaSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____________ DiffXMetaSectionTests.test_format_with_invalid_type ______________

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_format_with_invalid_type>

    def test_format_with_invalid_type(self):
        """Testing DiffXMetaSection.format with invalid type"""
>       self.run_invalid_option_type_test(option_name='format',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2061: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_format_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "format" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXMetaSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____________ DiffXMetaSectionTests.test_format_with_invalid_value _____________

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_format_with_invalid_value>

    def test_format_with_invalid_value(self):
        """Testing DiffXMetaSection.format with invalid value"""
>       self.run_invalid_option_value_test(
            option_name='format',
            value='xxx',
            expected_choices=MetaFormat.VALID_VALUES)

pydiffx/tests/test_dom_objects.py:2054: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:79: in run_invalid_option_value_test
    with self.assertRaisesMessage(DiffXOptionValueChoiceError,
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_format_with_invalid_value>
exception = <class 'pydiffx.errors.DiffXOptionValueChoiceError'>
message = '"xxx" is not a supported value for format. Expected one of: json'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXMetaSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____________ DiffXMetaSectionTests.test_init_with_invalid_options _____________

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_init_with_invalid_options>

    def test_init_with_invalid_options(self):
        """Testing DiffXMetaSection.__init__ with invalid options"""
        message = '"invalid_option" is not a valid option or content section'
    
>       with self.assertRaisesMessage(DiffXUnknownOptionError, message):

pydiffx/tests/test_dom_objects.py:2020: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXMetaSectionTests testMethod=test_init_with_invalid_options>
exception = <class 'pydiffx.errors.DiffXUnknownOptionError'>
message = '"invalid_option" is not a valid option or content section'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXMetaSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXPreambleSectionTests.test_content_with_invalid_type ___________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_content_with_invalid_type>

    def test_content_with_invalid_type(self):
        """Testing DiffXPreambleSection.content with invalid typw"""
>       self.run_invalid_content_type_test(content=123,
                                           expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2132: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:48: in run_invalid_content_type_test
    with self.assertRaisesMessage(TypeError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_content_with_invalid_type>
exception = <class 'TypeError'>
message = "Expected the content to be a <class 'str'> type, got <class 'int'> instead"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________ DiffXPreambleSectionTests.test_encoding_with_invalid_type ___________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_encoding_with_invalid_type>

    def test_encoding_with_invalid_type(self):
        """Testing DiffXPreambleSection.encoding with invalid type"""
>       self.run_invalid_option_type_test(option_name='encoding',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2141: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_encoding_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "encoding" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXPreambleSectionTests.test_indent_with_invalid_type ____________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_indent_with_invalid_type>

    def test_indent_with_invalid_type(self):
        """Testing DiffXPreambleSection.indent with invalid type"""
>       self.run_invalid_option_type_test(option_name='indent',
                                          value='xxx',
                                          expected_type=int)

pydiffx/tests/test_dom_objects.py:2151: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_indent_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "indent" to be a <class \'int\'> type, got <class \'str\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXPreambleSectionTests.test_init_with_invalid_options ___________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_init_with_invalid_options>

    def test_init_with_invalid_options(self):
        """Testing DiffXPreambleSection.__init__ with invalid options"""
        message = '"invalid_option" is not a valid option or content section'
    
>       with self.assertRaisesMessage(DiffXUnknownOptionError, message):

pydiffx/tests/test_dom_objects.py:2123: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_init_with_invalid_options>
exception = <class 'pydiffx.errors.DiffXUnknownOptionError'>
message = '"invalid_option" is not a valid option or content section'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________ DiffXPreambleSectionTests.test_line_endings_with_invalid_type _________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_line_endings_with_invalid_type>

    def test_line_endings_with_invalid_type(self):
        """Testing DiffXPreambleSection.line_endings with invalid type"""
>       self.run_invalid_option_type_test(option_name='line_endings',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2172: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_line_endings_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "line_endings" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________ DiffXPreambleSectionTests.test_line_endings_with_invalid_value ________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_line_endings_with_invalid_value>

    def test_line_endings_with_invalid_value(self):
        """Testing DiffXPreambleSection.line_endings with invalid value"""
>       self.run_invalid_option_value_test(
            option_name='line_endings',
            value='xxx',
            expected_choices=LineEndings.VALID_VALUES)

pydiffx/tests/test_dom_objects.py:2165: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:79: in run_invalid_option_value_test
    with self.assertRaisesMessage(DiffXOptionValueChoiceError,
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_line_endings_with_invalid_value>
exception = <class 'pydiffx.errors.DiffXOptionValueChoiceError'>
message = '"xxx" is not a supported value for line_endings. Expected one of: dos, unix'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________ DiffXPreambleSectionTests.test_mimetype_with_invalid_type ___________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_mimetype_with_invalid_type>

    def test_mimetype_with_invalid_type(self):
        """Testing DiffXPreambleSection.mimetype with invalid type"""
>       self.run_invalid_option_type_test(option_name='mimetype',
                                          value=123,
                                          expected_type=six.text_type)

pydiffx/tests/test_dom_objects.py:2193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:67: in run_invalid_option_type_test
    with self.assertRaisesMessage(DiffXOptionValueError, expected_message):
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_mimetype_with_invalid_type>
exception = <class 'pydiffx.errors.DiffXOptionValueError'>
message = 'Expected "mimetype" to be a <class \'str\'> type, got <class \'int\'> instead'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________ DiffXPreambleSectionTests.test_mimetype_with_invalid_value __________

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_mimetype_with_invalid_value>

    def test_mimetype_with_invalid_value(self):
        """Testing DiffXPreambleSection.mimetype with invalid value"""
>       self.run_invalid_option_value_test(
            option_name='mimetype',
            value='image/png',
            expected_choices=PreambleMimeType.VALID_VALUES)

pydiffx/tests/test_dom_objects.py:2186: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pydiffx/tests/test_dom_objects.py:79: in run_invalid_option_value_test
    with self.assertRaisesMessage(DiffXOptionValueChoiceError,
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_dom_objects.DiffXPreambleSectionTests testMethod=test_mimetype_with_invalid_value>
exception = <class 'pydiffx.errors.DiffXOptionValueChoiceError'>
message = '"image/png" is not a supported value for mimetype. Expected one of: text/markdown, text/plain'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXPreambleSectionTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________ DiffXReaderTests.test_with_content_invalid_line_ending_option _________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_invalid_line_ending_option>

    def test_with_content_invalid_line_ending_option(self):
        """Testing DiffXReader with content section containing invalid
        line_ending= option
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=1.0\n'
            b'#.change:\n'
            b'#..file:\n'
            b'#...meta: length=3, line_endings=c64\n'
            b'{}\n'
        ))
    
        message = (
            'Error on line 5: Unsupported value "c64" for line_endings. '
            'Expected one of: dos, unix'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1329: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_invalid_line_ending_option>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 5: Unsupported value "c64" for line_endings. Expected one of: dos, unix'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ DiffXReaderTests.test_with_content_missing_length_option ___________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_missing_length_option>

    def test_with_content_missing_length_option(self):
        """Testing DiffXReader with content section missing length= option
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=1.0\n'
            b'#.change:\n'
            b'#..file:\n'
            b'#...meta:\n'
            b'{\n'
            b'    "path": {\n'
            b'        "new": "message2.py",\n'
            b'        "old": "message.py"\n'
            b'    }\n'
            b'}\n'
        ))
    
        message = (
            'Error on line 4: Expected section "...meta" to have a length '
            'option'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1309: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_missing_length_option>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 4: Expected section "...meta" to have a length option'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
______________ DiffXReaderTests.test_with_content_missing_newline ______________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_missing_newline>

    def test_with_content_missing_newline(self):
        """Testing DiffXReader with content section missing trailing newline
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=1.0\n'
            b'#.change:\n'
            b'#..preamble: length=2\n'
            b':)\n'
            b'#.change:\n'
        ))
    
        message = 'Error on line 4: Expected a newline after content'
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1345: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_content_missing_newline>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 4: Expected a newline after content'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_______________ DiffXReaderTests.test_with_header_invalid_format _______________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_format>

    def test_with_header_invalid_format(self):
        """Testing DiffXReader with header in an invalid format"""
        reader = DiffXReader(io.BytesIO(
            b'#diffx: key=value key=value\n'
        ))
    
        message = (
            'Error on line 1: Unexpected or improperly formatted header: '
            '%r'
            % b'#diffx: key=value key=value'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1269: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_format>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = "Error on line 1: Unexpected or improperly formatted header: b'#diffx: key=value key=value'"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________ DiffXReaderTests.test_with_header_invalid_option_key_chars __________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_option_key_chars>

    def test_with_header_invalid_option_key_chars(self):
        """Testing DiffXReader with header containing invalid characters in
        option key
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: #key=value, version=1.0\n'
        ))
    
        message = (
            'Error on line 1, column 9: Header option key "#key" contains '
            'invalid characters'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1254: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_option_key_chars>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 1, column 9: Header option key "#key" contains invalid characters'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_________ DiffXReaderTests.test_with_header_invalid_option_value_chars _________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_option_value_chars>

    def test_with_header_invalid_option_value_chars(self):
        """Testing DiffXReader with header containing invalid characters in
        option value
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: key=#value, version=1.0\n'
        ))
    
        message = (
            'Error on line 1, column 13: Header option value "#value" for '
            'key "key" contains invalid characters'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1285: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_header_invalid_option_value_chars>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 1, column 13: Header option value "#value" for key "key" contains invalid characters'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_______________ DiffXReaderTests.test_with_invalid_section_order _______________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_invalid_section_order>

    def test_with_invalid_section_order(self):
        """Testing DiffXReader with invalid section order"""
        reader = DiffXReader(io.BytesIO(
            b'#diffx: version=1.0\n'
            b'#...file:\n'
        ))
    
        message = (
            'Error on line 2: Unknown or unexpected section ID "...file". '
            'Expected one of: ".change", ".meta", ".preamble"'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1238: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_invalid_section_order>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 2: Unknown or unexpected section ID "...file". Expected one of: ".change", ".meta", ".preamble"'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
__________________ DiffXReaderTests.test_with_invalid_version __________________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_invalid_version>

    def test_with_invalid_version(self):
        """Testing DiffXReader with invalid version in DiffX header"""
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=142.6\n'
        ))
    
        message = (
            'Error on line 1: The DiffX version in this file (142.6) is not '
            'supported by this version of the diffx module'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1223: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_invalid_version>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 1: The DiffX version in this file (142.6) is not supported by this version of the diffx module'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
______________ DiffXReaderTests.test_with_meta_deserialize_error _______________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_meta_deserialize_error>

    def test_with_meta_deserialize_error(self):
        """Testing DiffXReader with meta section containing JSON content
        that could not be deserialized
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=1.0\n'
            b'#.change:\n'
            b'#..file:\n'
            b'#...meta: length=2\n'
            b'"\n'
        ))
    
        message = (
            'Error on line 4: JSON metadata could not be parsed: '
            'Invalid control character at: line 1 column 2 (char 1)'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1385: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_meta_deserialize_error>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 4: JSON metadata could not be parsed: Invalid control character at: line 1 column 2 (char 1)'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
________________ DiffXReaderTests.test_with_meta_invalid_format ________________

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_meta_invalid_format>

    def test_with_meta_invalid_format(self):
        """Testing DiffXReader with meta section containing invalid format=
        option
        """
        reader = DiffXReader(io.BytesIO(
            b'#diffx: encoding=utf-8, version=1.0\n'
            b'#.change:\n'
            b'#..file:\n'
            b'#...meta: length=14, format=html\n'
            b'<html></html>\n'
        ))
    
        message = (
            'Error on line 4: Unexpected metadata format "html". If the '
            '"format" option is provided, it must be "json".'
        )
    
>       with self.assertRaisesMessage(DiffXParseError, message):

pydiffx/tests/test_reader.py:1365: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_reader.DiffXReaderTests testMethod=test_with_meta_invalid_format>
exception = <class 'pydiffx.errors.DiffXParseError'>
message = 'Error on line 4: Unexpected metadata format "html". If the "format" option is provided, it must be "json".'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXReaderTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
______________ GetNewlineForTypeTests.test_with_encoding_invalid _______________

self = <pydiffx.tests.test_utils_text.GetNewlineForTypeTests testMethod=test_with_encoding_invalid>

    def test_with_encoding_invalid(self):
        """Testing get_newline_for_type with invalid encoding"""
        message = 'unknown encoding: xxx-invalid'
    
>       with self.assertRaisesMessage(LookupError, message):

pydiffx/tests/test_utils_text.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_text.GetNewlineForTypeTests testMethod=test_with_encoding_invalid>
exception = <class 'LookupError'>, message = 'unknown encoding: xxx-invalid'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetNewlineForTypeTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
____________ GetNewlineForTypeTests.test_with_invalid_line_endings _____________

self = <pydiffx.tests.test_utils_text.GetNewlineForTypeTests testMethod=test_with_invalid_line_endings>

    def test_with_invalid_line_endings(self):
        """Testing get_newline_for_type with invalid value for line endings"""
        message = (
            'Unsupported value "xxx" for line_endings. Expected one of: '
            'dos, unix'
        )
    
>       with self.assertRaisesMessage(ValueError, message):

pydiffx/tests/test_utils_text.py:30: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_text.GetNewlineForTypeTests testMethod=test_with_invalid_line_endings>
exception = <class 'ValueError'>
message = 'Unsupported value "xxx" for line_endings. Expected one of: dos, unix'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetNewlineForTypeTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_both ____________

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_both>

    def test_with_bad_hunk_length_both(self):
        """Testing get_unified_diff_hunks with bad hunk length on both
        original and modified sides at end of file
        """
        message = (
            'Unexpected end of file when processing the diff hunk on line 6'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:820: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_both>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = 'Unexpected end of file when processing the diff hunk on line 6'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_both_and_new_hunk _____

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_both_and_new_hunk>

    def test_with_bad_hunk_length_both_and_new_hunk(self):
        """Testing get_unified_diff_hunks with bad hunk length on both
        original and modified sides followed by new hunk
        """
        message = (
            'Malformed content in the diff hunk on line 7: %r'
            % b'@@ -30,7 +32,7 @@\n'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:875: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_both_and_new_hunk>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = "Malformed content in the diff hunk on line 7: b'@@ -30,7 +32,7 @@\\n'"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_________ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_modified __________

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_modified>

    def test_with_bad_hunk_length_modified(self):
        """Testing get_unified_diff_hunks with bad hunk length on modified
        side at end of file
        """
        message = (
            'Unexpected end of file when processing the diff hunk on line 6'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:856: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_modified>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = 'Unexpected end of file when processing the diff hunk on line 6'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_modified_and_new_hunk ___

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_modified_and_new_hunk>

    def test_with_bad_hunk_length_modified_and_new_hunk(self):
        """Testing get_unified_diff_hunks with bad hunk length on modified
        side followed by new hunk
        """
        message = (
            'Malformed content in the diff hunk on line 7: %r'
            % b'@@ -30,7 +32,7 @@\n'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:931: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_modified_and_new_hunk>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = "Malformed content in the diff hunk on line 7: b'@@ -30,7 +32,7 @@\\n'"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
___________ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_orig ____________

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_orig>

    def test_with_bad_hunk_length_orig(self):
        """Testing get_unified_diff_hunks with bad hunk length on original
        side at end of file
        """
        message = (
            'Unexpected end of file when processing the diff hunk on line 6'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:838: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_orig>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = 'Unexpected end of file when processing the diff hunk on line 6'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_____ GetUnifiedDiffHunksTests.test_with_bad_hunk_length_orig_and_new_hunk _____

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_orig_and_new_hunk>

    def test_with_bad_hunk_length_orig_and_new_hunk(self):
        """Testing get_unified_diff_hunks with bad hunk length on original
        side followed by new hunk
        """
        message = (
            'Malformed content in the diff hunk on line 7: %r'
            % b'@@ -30,7 +32,7 @@\n'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:903: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_bad_hunk_length_orig_and_new_hunk>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = "Malformed content in the diff hunk on line 7: b'@@ -30,7 +32,7 @@\\n'"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
______________ GetUnifiedDiffHunksTests.test_with_garbage_in_hunk ______________

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_garbage_in_hunk>

    def test_with_garbage_in_hunk(self):
        """Testing get_unified_diff_hunks with garbage in hunk"""
        message = (
            'Malformed content in the diff hunk on line 6: %r'
            % b'garbage\n'
        )
    
>       with self.assertRaisesMessage(MalformedHunkError, message):

pydiffx/tests/test_utils_unified_diffs.py:798: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_utils_unified_diffs.GetUnifiedDiffHunksTests testMethod=test_with_garbage_in_hunk>
exception = <class 'pydiffx.errors.MalformedHunkError'>
message = "Malformed content in the diff hunk on line 6: b'garbage\\n'"

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'GetUnifiedDiffHunksTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
______________ DiffXWriterTests.test_new_change_after_new_change _______________

self = <pydiffx.tests.test_writer.DiffXWriterTests testMethod=test_new_change_after_new_change>

    def test_new_change_after_new_change(self):
        """Testing DiffXWriter.new_change after new_change"""
        stream, writer = self._create_writer()
        writer.new_change()
    
        message = (
            'new_change() cannot be called at this stage (after '
            'new_change()). Expected one of: new_file(), write_meta(), '
            'write_preamble()'
        )
    
>       with self.assertRaisesMessage(DiffXSectionOrderError, message):

pydiffx/tests/test_writer.py:488: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pydiffx.tests.test_writer.DiffXWriterTests testMethod=test_new_change_after_new_change>
exception = <class 'pydiffx.errors.DiffXSectionOrderError'>
message = 'new_change() cannot be called at this stage (after new_change()). Expected one of: new_file(), write_meta(), write_preamble()'

    @contextmanager
    def assertRaisesMessage(self, exception, message):
>       with self.assertRaisesRegexp(exception, re.escape(message)):
E       AttributeError: 'DiffXWriterTests' object has no attribute 'assertRaisesRegexp'. Did you mean: 'assertRaisesRegex'?

pydiffx/tests/testcases.py:68: AttributeError
_______________ DiffXWriterTests.test_new_change_after_new_file ________________

self = <pydiffx.tests.test_writer.DiffXWriterTests testMethod=test_new_change_after_new_file>

    def test_new_change_after_new_file(self):
        """Testing DiffXWriter.new_change after new_file"""
        stream, writer = self._create_writer()
        writer.new_change()
        writer.new_file()
    
        message = (
            'new_change() cannot be called at this stage (after new_file()). '
            'Expected write_meta()'
        )
    
>       with self.assertRaisesMessage(DiffXSectionOrderError, message):

pydiffx/tests/test_writer.py:502: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib64/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Removed many old deprecated unittest features:

    - A number of TestCase method aliases:

    | Deprecated alias      |  Method Name           | Deprecated in |
    +-----------------------|------------------------|---------------+
    | failUnless            | assertTrue()           |      3.1      |
    | failIf                | assertFalse()          |      3.1      |
    | failUnlessEqual       | assertEqual()          |      3.1      |
    | failIfEqual           | assertNotEqual()       |      3.1      |
    | failUnlessAlmostEqual | assertAlmostEqual()    |      3.1      |
    | failIfAlmostEqual     | assertNotAlmostEqual() |      3.1      |
    | failUnlessRaises      | assertRaises()         |      3.1      |
    | assert_               | assertTrue()           |      3.2      |
    | assertEquals          | assertEqual()          |      3.2      |
    | assertNotEquals       | assertNotEqual()       |      3.2      |
    | assertAlmostEquals    | assertAlmostEqual()    |      3.2      |
    | assertNotAlmostEquals | assertNotAlmostEqual() |      3.2      |
    | assertRegexpMatches   | assertRegex()          |      3.2      |
    | assertRaisesRegexp    | assertRaisesRegex()    |      3.2      |
    | assertNotRegexpMatches| assertNotRegex()       |      3.5      |
    +-----------------------|------------------------|---------------+

    You can use https://github.com/isidentical/teyit to automatically modernise your unit tests.

    - Undocumented and broken TestCase method assertDictContainsSubset (deprecated in Python 3.2).

    - Undocumented TestLoader.loadTestsFromModule parameter use_load_tests (deprecated and ignored since Python 3.2).

    - An alias of the TextTestResult class: _TextTestResult (deprecated in Python
3.2).

(Contributed by Serhiy Storchaka in bpo-45162.)
https://bugs.python.org/issue?@action=redirect&bpo=45162



https://docs.python.org/3.12/whatsnew/3.12.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.12/fedora-rawhide-x86_64/05576745-python-pydiffx/

For all our attempts to build python-pydiffx with Python 3.12, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.12/package/python-pydiffx/

Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.12:
https://copr.fedorainfracloud.org/coprs/g/python/python3.12/

Let us know here if you have any questions.

Python 3.12 is planned to be included in Fedora 39. To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.12.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon.
We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.

Comment 1 Fedora Release Engineering 2023-08-16 07:10:49 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 39 development cycle.
Changing version to 39.

Comment 2 Fedora Admin user for bugzilla script actions 2023-09-05 00:51:40 UTC
This package has changed maintainer in Fedora. Reassigning to the new maintainer of this component.

Comment 3 Miro Hrončok 2023-09-26 09:53:30 UTC
Automation has figured out the package is retired in Fedora 39.

If you like it to be unretired, please open a ticket at https://pagure.io/releng/new_issue?template=package_unretirement

Comment 4 Fedora Update System 2023-10-05 15:29:50 UTC
FEDORA-2023-23af3b428d has been submitted as an update to Fedora 40. https://bodhi.fedoraproject.org/updates/FEDORA-2023-23af3b428d

Comment 5 Fedora Update System 2023-10-05 15:31:10 UTC
FEDORA-2023-23af3b428d has been pushed to the Fedora 40 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 6 Fedora Update System 2023-10-05 17:39:05 UTC
FEDORA-2023-37c3587aea has been submitted as an update to Fedora 39. https://bodhi.fedoraproject.org/updates/FEDORA-2023-37c3587aea

Comment 7 Fedora Update System 2023-10-05 20:11:20 UTC
FEDORA-2023-37c3587aea has been pushed to the Fedora 39 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2023-37c3587aea`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2023-37c3587aea

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 8 Fedora Update System 2023-10-07 03:24:15 UTC
FEDORA-2023-37c3587aea has been pushed to the Fedora 39 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.