<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/6abdcb1d983f2ebafb3ac2772a8e587e35de9496">https://github.com/macports/macports-ports/commit/6abdcb1d983f2ebafb3ac2772a8e587e35de9496</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 6abdcb1d983f2ebafb3ac2772a8e587e35de9496
</span>Author: Mark Mentovai <mark@mentovai.com>
AuthorDate: Wed Aug 16 14:47:16 2023 -0400

<span style='display:block; white-space:pre;color:#404040;'>    py-pyftdi: new port (0.55.0)
</span>---
 python/py-pyftdi/Portfile                          |  48 +++++++++
 .../py-pyftdi/files/patch-1_test_module_setup.diff | 112 +++++++++++++++++++++
 .../files/patch-2_test_untestable_base.diff        |  74 ++++++++++++++
 3 files changed, 234 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyftdi/Portfile b/python/py-pyftdi/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4d75337a44f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyftdi/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,48 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                py-pyftdi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        eblot pyftdi 0.55.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           {darwin any}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs     noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         PyFtdi aims at providing a user-space driver for popular \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    FTDI devices, implemented in pure Python language.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  dd4a6928cf7a0c93faea0e801655815b9ae3d671 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  6d55af8cb67f8282aea284df5d73605295e61db5d65da72a810282b25cc9ff2c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    186282
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions     38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517       yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${name} ne ${subport}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      patch-1_test_module_setup.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-2_test_untestable_base.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-pyusb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-serial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_test-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-ruamel-yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.run        yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.env-append FTDI_VIRTUAL=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This isn't all tests, because many tests require specific devices to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # connected. This only includes tests that don't require specific devices,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # and tests that can be mocked (some via FTDI_VIRTUAL above) so that they
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # don't require specific devices. See pyftdi/.github/workflows.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.target     pyftdi/tests/toolsimport.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    pyftdi/tests/mockusb.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    pyftdi/tests/gpio.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyftdi/files/patch-1_test_module_setup.diff b/python/py-pyftdi/files/patch-1_test_module_setup.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1315c50800d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyftdi/files/patch-1_test_module_setup.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,112 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/eblot/pyftdi/pull/356
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/eblot/pyftdi/commit/c131ff2c302b1bfe2ec6ec53331f55cae16b4b66.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b82c5e264e82052440cf98da070d86f81c734c4a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Mark Mentovai <mark@mentovai.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 16 Aug 2023 12:00:04 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/2] tests: use module_setup to establish virtual mock
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ environment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This makes it possible to run these virtual mock tests under pytest,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+which does not run main.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pyftdi/tests/eeprom_mock.py | 12 ++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pyftdi/tests/gpio.py        | 12 ++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pyftdi/tests/mockusb.py     |  6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 15 insertions(+), 15 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git pyftdi/tests/eeprom_mock.py pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7acf99f3048d..78665789c4c8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -269,7 +269,7 @@ def virtualize():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         raise AssertionError('Cannot load virtual USB backend')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++def setup_module():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     import doctest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     doctest.testmod(modules[__name__])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     debug = to_bool(environ.get('FTDI_DEBUG', 'off'))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -288,10 +288,6 @@ def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     FtdiLogger.set_level(loglevel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     FtdiLogger.set_formatter(formatter)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     virtualize()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    except KeyboardInterrupt:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -300,4 +296,8 @@ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_LOGLEVEL: a Logger debug level, to define log verbosity
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_DEBUG: to enable/disable debug mode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_VIRTUAL: to use a virtual device rather than a physical device
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    setup_module()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    except KeyboardInterrupt:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git pyftdi/tests/gpio.py pyftdi/tests/gpio.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4d159d51ac78..bdb0cbc892ea 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyftdi/tests/gpio.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyftdi/tests/gpio.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -633,7 +633,7 @@ def virtualize():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         raise AssertionError('Cannot load virtual USB backend') from exc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++def setup_module():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     import doctest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     doctest.testmod(modules[__name__])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     debug = to_bool(environ.get('FTDI_DEBUG', 'off'))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -652,10 +652,6 @@ def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     FtdiLogger.set_level(loglevel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     FtdiLogger.set_formatter(formatter)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     virtualize()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    except KeyboardInterrupt:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -664,4 +660,8 @@ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_LOGLEVEL: a Logger debug level, to define log verbosity
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_DEBUG: to enable/disable debug mode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #  FTDI_VIRTUAL: to use a virtual device rather than a physical device
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    setup_module()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    except KeyboardInterrupt:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git pyftdi/tests/mockusb.py pyftdi/tests/mockusb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 57d03e46d2cc..17553b1e7d88 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyftdi/tests/mockusb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyftdi/tests/mockusb.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -839,7 +839,7 @@ def suite():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return suite_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++def setup_module():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     testmod(modules[__name__])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     debug = to_bool(environ.get('FTDI_DEBUG', 'off'))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if debug:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -866,8 +866,8 @@ def main():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         MockLoader = backend.create_loader()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     except AttributeError as exc:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         raise AssertionError('Cannot load virtual USB backend') from exc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    setup_module()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ut_main(defaultTest='suite')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.41.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyftdi/files/patch-2_test_untestable_base.diff b/python/py-pyftdi/files/patch-2_test_untestable_base.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5eaa06f70b7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyftdi/files/patch-2_test_untestable_base.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,74 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/eblot/pyftdi/pull/356
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/eblot/pyftdi/commit/ed33b4916d382f8653d40c9f66d05f5efcf66a97.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 915fc5b461ed2b142f1e23ab7f1e3595fbaea3b1 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Mark Mentovai <mark@mentovai.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 16 Aug 2023 14:31:52 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/2] tests: don't present untestable base classes via pytest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pyftdi/tests/eeprom_mock.py | 14 +++++++-------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 7 insertions(+), 7 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git pyftdi/tests/eeprom_mock.py pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 78665789c4c8..ced748d2c902 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyftdi/tests/eeprom_mock.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,7 +18,7 @@ from pyftdi.ftdi import FtdiError
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VirtLoader = None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class FtdiTestCase(TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class FtdiBaseCase:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Common features for all tests.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,7 +37,7 @@ class FtdiTestCase(TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class EepromMirrorTestCase(FtdiTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class EepromMirrorBaseCase(FtdiBaseCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Test FTDI EEPROM mirror feature (duplicate eeprom data over 2 eeprom
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sectors). Generally this is tested with a virtual eeprom (by setting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     environment variable FTDI_VIRTUAL=on), however you may also test with an
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -52,7 +52,7 @@ class EepromMirrorTestCase(FtdiTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     @classmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def setUpClass(cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        FtdiTestCase.setUpClass()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        FtdiBaseCase.setUpClass()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if VirtLoader:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cls.loader = VirtLoader()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             with open(cls.TEST_CONFIG_FILENAME, 'rb') as yfp:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -180,15 +180,15 @@ class EepromMirrorTestCase(FtdiTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 eeprom.data[ii + eeprom.mirror_sector])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class EepromMirrorFt232hTestCase(EepromMirrorTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class EepromMirrorFt232hTestCase(EepromMirrorBaseCase, TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     TEST_CONFIG_FILENAME = 'pyftdi/tests/resources/ft232h.yaml'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class EepromMirrorFt2232hTestCase(EepromMirrorTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class EepromMirrorFt2232hTestCase(EepromMirrorBaseCase, TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     TEST_CONFIG_FILENAME = 'pyftdi/tests/resources/ft2232h.yaml'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class EepromMirrorFt230xTestCase(FtdiTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class EepromMirrorFt230xTestCase(FtdiBaseCase, TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Test FTDI eeprom with non-mirroring capabilities to ensure it works as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        expected.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -196,7 +196,7 @@ class EepromMirrorFt230xTestCase(FtdiTestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     @classmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def setUpClass(cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        FtdiTestCase.setUpClass()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        FtdiBaseCase.setUpClass()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if VirtLoader:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cls.loader = VirtLoader()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             with open(cls.TEST_CONFIG_FILENAME, 'rb') as yfp:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.41.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>