@@ -384,13 +384,6 @@ def check(self):
384
384
"""
385
385
pass
386
386
387
- def runtime_check (self ):
388
- """
389
- True if the runtime dependencies of the backend are met. Assumes that
390
- the build-time dependencies are met.
391
- """
392
- return True
393
-
394
387
def get_packages (self ):
395
388
"""
396
389
Get a list of package names to add to the configuration.
@@ -1368,10 +1361,6 @@ class BackendTkAgg(OptionalBackendPackage):
1368
1361
def check (self ):
1369
1362
return "installing; run-time loading from Python Tcl / Tk"
1370
1363
1371
- def runtime_check (self ):
1372
- """Checks whether TkAgg runtime dependencies are met."""
1373
- return importlib .util .find_spec ("tkinter" ) is not None
1374
-
1375
1364
def get_extension (self ):
1376
1365
sources = [
1377
1366
'src/_tkagg.cpp'
@@ -1391,57 +1380,6 @@ def add_flags(self, ext):
1391
1380
ext .libraries .extend (['dl' ])
1392
1381
1393
1382
1394
- class BackendGtk3Agg (OptionalBackendPackage ):
1395
- name = "gtk3agg"
1396
-
1397
- def check_requirements (self ):
1398
- if not any (map (importlib .util .find_spec , ["cairocffi" , "cairo" ])):
1399
- raise CheckFailed ("Requires cairocffi or pycairo to be installed." )
1400
-
1401
- try :
1402
- import gi
1403
- except ImportError :
1404
- raise CheckFailed ("Requires pygobject to be installed." )
1405
-
1406
- try :
1407
- gi .require_version ("Gtk" , "3.0" )
1408
- except ValueError :
1409
- raise CheckFailed (
1410
- "Requires gtk3 development files to be installed." )
1411
- except AttributeError :
1412
- raise CheckFailed ("pygobject version too old." )
1413
-
1414
- try :
1415
- from gi .repository import Gtk , Gdk , GObject
1416
- except (ImportError , RuntimeError ):
1417
- raise CheckFailed ("Requires pygobject to be installed." )
1418
-
1419
- return "version {}.{}.{}" .format (
1420
- Gtk .get_major_version (),
1421
- Gtk .get_minor_version (),
1422
- Gtk .get_micro_version ())
1423
-
1424
- def get_package_data (self ):
1425
- return {'matplotlib' : ['mpl-data/*.glade' ]}
1426
-
1427
-
1428
- class BackendGtk3Cairo (BackendGtk3Agg ):
1429
- name = "gtk3cairo"
1430
-
1431
-
1432
- class BackendWxAgg (OptionalBackendPackage ):
1433
- name = "wxagg"
1434
-
1435
- def check_requirements (self ):
1436
- try :
1437
- import wx
1438
- backend_version = wx .VERSION_STRING
1439
- except ImportError :
1440
- raise CheckFailed ("requires wxPython" )
1441
-
1442
- return "version %s" % backend_version
1443
-
1444
-
1445
1383
class BackendMacOSX (OptionalBackendPackage ):
1446
1384
name = 'macosx'
1447
1385
@@ -1487,174 +1425,6 @@ def get_extension(self):
1487
1425
return ext
1488
1426
1489
1427
1490
- class BackendQtBase (OptionalBackendPackage ):
1491
-
1492
- def convert_qt_version (self , version ):
1493
- version = '%x' % version
1494
- temp = []
1495
- while len (version ) > 0 :
1496
- version , chunk = version [:- 2 ], version [- 2 :]
1497
- temp .insert (0 , str (int (chunk , 16 )))
1498
- return '.' .join (temp )
1499
-
1500
- def check_requirements (self ):
1501
- """
1502
- If PyQt4/PyQt5 is already imported, importing PyQt5/PyQt4 will fail
1503
- so we need to test in a subprocess (as for Gtk3).
1504
- """
1505
- try :
1506
- p = multiprocessing .Pool ()
1507
-
1508
- except :
1509
- # Can't do multiprocessing, fall back to normal approach
1510
- # (this will fail if importing both PyQt4 and PyQt5).
1511
- try :
1512
- # Try in-process
1513
- msg = self .callback (self )
1514
- except RuntimeError :
1515
- raise CheckFailed (
1516
- "Could not import: are PyQt4 & PyQt5 both installed?" )
1517
-
1518
- else :
1519
- # Multiprocessing OK
1520
- try :
1521
- res = p .map_async (self .callback , [self ])
1522
- msg = res .get (timeout = 10 )[0 ]
1523
- except multiprocessing .TimeoutError :
1524
- p .terminate ()
1525
- # No result returned. Probably hanging, terminate the process.
1526
- raise CheckFailed ("Check timed out" )
1527
- except :
1528
- # Some other error.
1529
- p .close ()
1530
- raise
1531
- else :
1532
- # Clean exit
1533
- p .close ()
1534
- finally :
1535
- # Tidy up multiprocessing
1536
- p .join ()
1537
-
1538
- return msg
1539
-
1540
-
1541
- def backend_pyside_internal_check (self ):
1542
- try :
1543
- from PySide import __version__
1544
- from PySide import QtCore
1545
- except ImportError :
1546
- raise CheckFailed ("PySide not found" )
1547
- else :
1548
- return ("Qt: %s, PySide: %s" %
1549
- (QtCore .__version__ , __version__ ))
1550
-
1551
-
1552
- def backend_pyqt4_internal_check (self ):
1553
- try :
1554
- from PyQt4 import QtCore
1555
- except ImportError :
1556
- raise CheckFailed ("PyQt4 not found" )
1557
-
1558
- try :
1559
- qt_version = QtCore .QT_VERSION
1560
- pyqt_version_str = QtCore .PYQT_VERSION_STR
1561
- except AttributeError :
1562
- raise CheckFailed ('PyQt4 not correctly imported' )
1563
- else :
1564
- return ("Qt: %s, PyQt: %s" % (self .convert_qt_version (qt_version ), pyqt_version_str ))
1565
-
1566
-
1567
- def backend_qt4_internal_check (self ):
1568
- successes = []
1569
- failures = []
1570
- try :
1571
- successes .append (backend_pyside_internal_check (self ))
1572
- except CheckFailed as e :
1573
- failures .append (str (e ))
1574
-
1575
- try :
1576
- successes .append (backend_pyqt4_internal_check (self ))
1577
- except CheckFailed as e :
1578
- failures .append (str (e ))
1579
-
1580
- if len (successes ) == 0 :
1581
- raise CheckFailed ('; ' .join (failures ))
1582
- return '; ' .join (successes + failures )
1583
-
1584
-
1585
- class BackendQt4 (BackendQtBase ):
1586
- name = "qt4agg"
1587
-
1588
- def __init__ (self , * args , ** kwargs ):
1589
- BackendQtBase .__init__ (self , * args , ** kwargs )
1590
- self .callback = backend_qt4_internal_check
1591
-
1592
- def backend_pyside2_internal_check (self ):
1593
- try :
1594
- from PySide2 import __version__
1595
- from PySide2 import QtCore
1596
- except ImportError :
1597
- raise CheckFailed ("PySide2 not found" )
1598
- else :
1599
- return ("Qt: %s, PySide2: %s" %
1600
- (QtCore .__version__ , __version__ ))
1601
-
1602
- def backend_pyqt5_internal_check (self ):
1603
- try :
1604
- from PyQt5 import QtCore
1605
- except ImportError :
1606
- raise CheckFailed ("PyQt5 not found" )
1607
-
1608
- try :
1609
- qt_version = QtCore .QT_VERSION
1610
- pyqt_version_str = QtCore .PYQT_VERSION_STR
1611
- except AttributeError :
1612
- raise CheckFailed ('PyQt5 not correctly imported' )
1613
- else :
1614
- return ("Qt: %s, PyQt: %s" % (self .convert_qt_version (qt_version ), pyqt_version_str ))
1615
-
1616
- def backend_qt5_internal_check (self ):
1617
- successes = []
1618
- failures = []
1619
- try :
1620
- successes .append (backend_pyside2_internal_check (self ))
1621
- except CheckFailed as e :
1622
- failures .append (str (e ))
1623
-
1624
- try :
1625
- successes .append (backend_pyqt5_internal_check (self ))
1626
- except CheckFailed as e :
1627
- failures .append (str (e ))
1628
-
1629
- if len (successes ) == 0 :
1630
- raise CheckFailed ('; ' .join (failures ))
1631
- return '; ' .join (successes + failures )
1632
-
1633
- class BackendQt5 (BackendQtBase ):
1634
- name = "qt5agg"
1635
-
1636
- def __init__ (self , * args , ** kwargs ):
1637
- BackendQtBase .__init__ (self , * args , ** kwargs )
1638
- self .callback = backend_qt5_internal_check
1639
-
1640
-
1641
- class BackendCairo (OptionalBackendPackage ):
1642
- name = "cairo"
1643
-
1644
- def check_requirements (self ):
1645
- try :
1646
- import cairocffi
1647
- except ImportError :
1648
- try :
1649
- import cairo
1650
- except ImportError :
1651
- raise CheckFailed ("cairocffi or pycairo not found" )
1652
- else :
1653
- return "pycairo version %s" % cairo .version
1654
- else :
1655
- return "cairocffi version %s" % cairocffi .version
1656
-
1657
-
1658
1428
class OptionalPackageData (OptionalPackage ):
1659
1429
config_category = "package_data"
1660
1430
0 commit comments