@@ -355,13 +355,6 @@ def check(self):
355
355
"""
356
356
pass
357
357
358
- def runtime_check (self ):
359
- """
360
- True if the runtime dependencies of the backend are met. Assumes that
361
- the build-time dependencies are met.
362
- """
363
- return True
364
-
365
358
def get_packages (self ):
366
359
"""
367
360
Get a list of package names to add to the configuration.
@@ -1325,10 +1318,6 @@ class BackendTkAgg(OptionalBackendPackage):
1325
1318
def check (self ):
1326
1319
return "installing; run-time loading from Python Tcl / Tk"
1327
1320
1328
- def runtime_check (self ):
1329
- """Checks whether TkAgg runtime dependencies are met."""
1330
- return importlib .util .find_spec ("tkinter" ) is not None
1331
-
1332
1321
def get_extension (self ):
1333
1322
sources = [
1334
1323
'src/_tkagg.cpp'
@@ -1348,57 +1337,6 @@ def add_flags(self, ext):
1348
1337
ext .libraries .extend (['dl' ])
1349
1338
1350
1339
1351
- class BackendGtk3Agg (OptionalBackendPackage ):
1352
- name = "gtk3agg"
1353
-
1354
- def check_requirements (self ):
1355
- if not any (map (importlib .util .find_spec , ["cairocffi" , "cairo" ])):
1356
- raise CheckFailed ("Requires cairocffi or pycairo to be installed." )
1357
-
1358
- try :
1359
- import gi
1360
- except ImportError :
1361
- raise CheckFailed ("Requires pygobject to be installed." )
1362
-
1363
- try :
1364
- gi .require_version ("Gtk" , "3.0" )
1365
- except ValueError :
1366
- raise CheckFailed (
1367
- "Requires gtk3 development files to be installed." )
1368
- except AttributeError :
1369
- raise CheckFailed ("pygobject version too old." )
1370
-
1371
- try :
1372
- from gi .repository import Gtk , Gdk , GObject
1373
- except (ImportError , RuntimeError ):
1374
- raise CheckFailed ("Requires pygobject to be installed." )
1375
-
1376
- return "version {}.{}.{}" .format (
1377
- Gtk .get_major_version (),
1378
- Gtk .get_minor_version (),
1379
- Gtk .get_micro_version ())
1380
-
1381
- def get_package_data (self ):
1382
- return {'matplotlib' : ['mpl-data/*.glade' ]}
1383
-
1384
-
1385
- class BackendGtk3Cairo (BackendGtk3Agg ):
1386
- name = "gtk3cairo"
1387
-
1388
-
1389
- class BackendWxAgg (OptionalBackendPackage ):
1390
- name = "wxagg"
1391
-
1392
- def check_requirements (self ):
1393
- try :
1394
- import wx
1395
- backend_version = wx .VERSION_STRING
1396
- except ImportError :
1397
- raise CheckFailed ("requires wxPython" )
1398
-
1399
- return "version %s" % backend_version
1400
-
1401
-
1402
1340
class BackendMacOSX (OptionalBackendPackage ):
1403
1341
name = 'macosx'
1404
1342
@@ -1444,174 +1382,6 @@ def get_extension(self):
1444
1382
return ext
1445
1383
1446
1384
1447
- class BackendQtBase (OptionalBackendPackage ):
1448
-
1449
- def convert_qt_version (self , version ):
1450
- version = '%x' % version
1451
- temp = []
1452
- while len (version ) > 0 :
1453
- version , chunk = version [:- 2 ], version [- 2 :]
1454
- temp .insert (0 , str (int (chunk , 16 )))
1455
- return '.' .join (temp )
1456
-
1457
- def check_requirements (self ):
1458
- """
1459
- If PyQt4/PyQt5 is already imported, importing PyQt5/PyQt4 will fail
1460
- so we need to test in a subprocess (as for Gtk3).
1461
- """
1462
- try :
1463
- p = multiprocessing .Pool ()
1464
-
1465
- except :
1466
- # Can't do multiprocessing, fall back to normal approach
1467
- # (this will fail if importing both PyQt4 and PyQt5).
1468
- try :
1469
- # Try in-process
1470
- msg = self .callback (self )
1471
- except RuntimeError :
1472
- raise CheckFailed (
1473
- "Could not import: are PyQt4 & PyQt5 both installed?" )
1474
-
1475
- else :
1476
- # Multiprocessing OK
1477
- try :
1478
- res = p .map_async (self .callback , [self ])
1479
- msg = res .get (timeout = 10 )[0 ]
1480
- except multiprocessing .TimeoutError :
1481
- p .terminate ()
1482
- # No result returned. Probably hanging, terminate the process.
1483
- raise CheckFailed ("Check timed out" )
1484
- except :
1485
- # Some other error.
1486
- p .close ()
1487
- raise
1488
- else :
1489
- # Clean exit
1490
- p .close ()
1491
- finally :
1492
- # Tidy up multiprocessing
1493
- p .join ()
1494
-
1495
- return msg
1496
-
1497
-
1498
- def backend_pyside_internal_check (self ):
1499
- try :
1500
- from PySide import __version__
1501
- from PySide import QtCore
1502
- except ImportError :
1503
- raise CheckFailed ("PySide not found" )
1504
- else :
1505
- return ("Qt: %s, PySide: %s" %
1506
- (QtCore .__version__ , __version__ ))
1507
-
1508
-
1509
- def backend_pyqt4_internal_check (self ):
1510
- try :
1511
- from PyQt4 import QtCore
1512
- except ImportError :
1513
- raise CheckFailed ("PyQt4 not found" )
1514
-
1515
- try :
1516
- qt_version = QtCore .QT_VERSION
1517
- pyqt_version_str = QtCore .PYQT_VERSION_STR
1518
- except AttributeError :
1519
- raise CheckFailed ('PyQt4 not correctly imported' )
1520
- else :
1521
- return ("Qt: %s, PyQt: %s" % (self .convert_qt_version (qt_version ), pyqt_version_str ))
1522
-
1523
-
1524
- def backend_qt4_internal_check (self ):
1525
- successes = []
1526
- failures = []
1527
- try :
1528
- successes .append (backend_pyside_internal_check (self ))
1529
- except CheckFailed as e :
1530
- failures .append (str (e ))
1531
-
1532
- try :
1533
- successes .append (backend_pyqt4_internal_check (self ))
1534
- except CheckFailed as e :
1535
- failures .append (str (e ))
1536
-
1537
- if len (successes ) == 0 :
1538
- raise CheckFailed ('; ' .join (failures ))
1539
- return '; ' .join (successes + failures )
1540
-
1541
-
1542
- class BackendQt4 (BackendQtBase ):
1543
- name = "qt4agg"
1544
-
1545
- def __init__ (self , * args , ** kwargs ):
1546
- BackendQtBase .__init__ (self , * args , ** kwargs )
1547
- self .callback = backend_qt4_internal_check
1548
-
1549
- def backend_pyside2_internal_check (self ):
1550
- try :
1551
- from PySide2 import __version__
1552
- from PySide2 import QtCore
1553
- except ImportError :
1554
- raise CheckFailed ("PySide2 not found" )
1555
- else :
1556
- return ("Qt: %s, PySide2: %s" %
1557
- (QtCore .__version__ , __version__ ))
1558
-
1559
- def backend_pyqt5_internal_check (self ):
1560
- try :
1561
- from PyQt5 import QtCore
1562
- except ImportError :
1563
- raise CheckFailed ("PyQt5 not found" )
1564
-
1565
- try :
1566
- qt_version = QtCore .QT_VERSION
1567
- pyqt_version_str = QtCore .PYQT_VERSION_STR
1568
- except AttributeError :
1569
- raise CheckFailed ('PyQt5 not correctly imported' )
1570
- else :
1571
- return ("Qt: %s, PyQt: %s" % (self .convert_qt_version (qt_version ), pyqt_version_str ))
1572
-
1573
- def backend_qt5_internal_check (self ):
1574
- successes = []
1575
- failures = []
1576
- try :
1577
- successes .append (backend_pyside2_internal_check (self ))
1578
- except CheckFailed as e :
1579
- failures .append (str (e ))
1580
-
1581
- try :
1582
- successes .append (backend_pyqt5_internal_check (self ))
1583
- except CheckFailed as e :
1584
- failures .append (str (e ))
1585
-
1586
- if len (successes ) == 0 :
1587
- raise CheckFailed ('; ' .join (failures ))
1588
- return '; ' .join (successes + failures )
1589
-
1590
- class BackendQt5 (BackendQtBase ):
1591
- name = "qt5agg"
1592
-
1593
- def __init__ (self , * args , ** kwargs ):
1594
- BackendQtBase .__init__ (self , * args , ** kwargs )
1595
- self .callback = backend_qt5_internal_check
1596
-
1597
-
1598
- class BackendCairo (OptionalBackendPackage ):
1599
- name = "cairo"
1600
-
1601
- def check_requirements (self ):
1602
- try :
1603
- import cairocffi
1604
- except ImportError :
1605
- try :
1606
- import cairo
1607
- except ImportError :
1608
- raise CheckFailed ("cairocffi or pycairo not found" )
1609
- else :
1610
- return "pycairo version %s" % cairo .version
1611
- else :
1612
- return "cairocffi version %s" % cairocffi .version
1613
-
1614
-
1615
1385
class OptionalPackageData (OptionalPackage ):
1616
1386
config_category = "package_data"
1617
1387
0 commit comments