@@ -1390,13 +1390,8 @@ def check(self):
1390
1390
return "installing; run-time loading from Python Tcl / Tk"
1391
1391
1392
1392
def runtime_check (self ):
1393
- """ Checks whether TkAgg runtime dependencies are met
1394
- """
1395
- try :
1396
- import tkinter
1397
- except ImportError :
1398
- return False
1399
- return True
1393
+ """Checks whether TkAgg runtime dependencies are met."""
1394
+ return importlib .util .find_spec ("tkinter" ) is not None
1400
1395
1401
1396
def get_extension (self ):
1402
1397
sources = [
@@ -1417,144 +1412,44 @@ def add_flags(self, ext):
1417
1412
ext .libraries .extend (['dl' ])
1418
1413
1419
1414
1420
- def backend_gtk3agg_internal_check (x ):
1421
- try :
1422
- import gi
1423
- except ImportError :
1424
- return (False , "Requires pygobject to be installed." )
1425
-
1426
- try :
1427
- gi .require_version ("Gtk" , "3.0" )
1428
- except ValueError :
1429
- return (False , "Requires gtk3 development files to be installed." )
1430
- except AttributeError :
1431
- return (False , "pygobject version too old." )
1432
-
1433
- try :
1434
- from gi .repository import Gtk , Gdk , GObject
1435
- except (ImportError , RuntimeError ):
1436
- return (False , "Requires pygobject to be installed." )
1437
-
1438
- return (True , "version %s.%s.%s" % (
1439
- Gtk .get_major_version (),
1440
- Gtk .get_micro_version (),
1441
- Gtk .get_minor_version ()))
1442
-
1443
-
1444
1415
class BackendGtk3Agg (OptionalBackendPackage ):
1445
1416
name = "gtk3agg"
1446
1417
1447
1418
def check_requirements (self ):
1448
- if 'TRAVIS' in os . environ :
1449
- raise CheckFailed ("Can't build with Travis " )
1419
+ if not any ( map ( importlib . util . find_spec , [ "cairocffi" , "cairo" ])) :
1420
+ raise CheckFailed ("Requires cairocffi or pycairo to be installed. " )
1450
1421
1451
- # This check needs to be performed out-of-process, because
1452
- # importing gi and then importing regular old pygtk afterward
1453
- # segfaults the interpreter.
1454
1422
try :
1455
- p = multiprocessing .Pool ()
1456
- except :
1457
- return "unknown (can not use multiprocessing to determine)"
1458
- try :
1459
- res = p .map_async (backend_gtk3agg_internal_check , [0 ])
1460
- success , msg = res .get (timeout = 10 )[0 ]
1461
- except multiprocessing .TimeoutError :
1462
- p .terminate ()
1463
- # No result returned. Probably hanging, terminate the process.
1464
- success = False
1465
- raise CheckFailed ("Check timed out" )
1466
- except :
1467
- p .close ()
1468
- # Some other error.
1469
- success = False
1470
- msg = "Could not determine"
1471
- raise
1472
- else :
1473
- p .close ()
1474
- finally :
1475
- p .join ()
1476
-
1477
- if success :
1478
- return msg
1479
- else :
1480
- raise CheckFailed (msg )
1481
-
1482
- def get_package_data (self ):
1483
- return {'matplotlib' : ['mpl-data/*.glade' ]}
1484
-
1485
-
1486
- def backend_gtk3cairo_internal_check (x ):
1487
- try :
1488
- import cairocffi
1489
- except ImportError :
1490
- try :
1491
- import cairo
1423
+ import gi
1492
1424
except ImportError :
1493
- return (False , "Requires cairocffi or pycairo to be installed." )
1494
-
1495
- try :
1496
- import gi
1497
- except ImportError :
1498
- return (False , "Requires pygobject to be installed." )
1499
-
1500
- try :
1501
- gi .require_version ("Gtk" , "3.0" )
1502
- except ValueError :
1503
- return (False , "Requires gtk3 development files to be installed." )
1504
- except AttributeError :
1505
- return (False , "pygobject version too old." )
1506
-
1507
- try :
1508
- from gi .repository import Gtk , Gdk , GObject
1509
- except (RuntimeError , ImportError ):
1510
- return (False , "Requires pygobject to be installed." )
1511
-
1512
- return (True , "version %s.%s.%s" % (
1513
- Gtk .get_major_version (),
1514
- Gtk .get_micro_version (),
1515
- Gtk .get_minor_version ()))
1516
-
1517
-
1518
- class BackendGtk3Cairo (OptionalBackendPackage ):
1519
- name = "gtk3cairo"
1425
+ raise CheckFailed ("Requires pygobject to be installed." )
1520
1426
1521
- def check_requirements (self ):
1522
- if 'TRAVIS' in os .environ :
1523
- raise CheckFailed ("Can't build with Travis" )
1524
-
1525
- # This check needs to be performed out-of-process, because
1526
- # importing gi and then importing regular old pygtk afterward
1527
- # segfaults the interpreter.
1528
1427
try :
1529
- p = multiprocessing .Pool ()
1530
- except :
1531
- return "unknown (can not use multiprocessing to determine)"
1428
+ gi .require_version ("Gtk" , "3.0" )
1429
+ except ValueError :
1430
+ raise CheckFailed (
1431
+ "Requires gtk3 development files to be installed." )
1432
+ except AttributeError :
1433
+ raise CheckFailed ("pygobject version too old." )
1434
+
1532
1435
try :
1533
- res = p .map_async (backend_gtk3cairo_internal_check , [0 ])
1534
- success , msg = res .get (timeout = 10 )[0 ]
1535
- except multiprocessing .TimeoutError :
1536
- p .terminate ()
1537
- # No result returned. Probably hanging, terminate the process.
1538
- success = False
1539
- raise CheckFailed ("Check timed out" )
1540
- except :
1541
- p .close ()
1542
- success = False
1543
- raise
1544
- else :
1545
- p .close ()
1546
- finally :
1547
- p .join ()
1436
+ from gi .repository import Gtk , Gdk , GObject
1437
+ except (ImportError , RuntimeError ):
1438
+ raise CheckFailed ("Requires pygobject to be installed." )
1548
1439
1549
- if success :
1550
- return msg
1551
- else :
1552
- raise CheckFailed ( msg )
1440
+ return "version {}.{}.{}" . format (
1441
+ Gtk . get_major_version (),
1442
+ Gtk . get_minor_version (),
1443
+ Gtk . get_micro_version () )
1553
1444
1554
1445
def get_package_data (self ):
1555
1446
return {'matplotlib' : ['mpl-data/*.glade' ]}
1556
1447
1557
1448
1449
+ class BackendGtk3Cairo (BackendGtk3Agg ):
1450
+ name = "gtk3cairo"
1451
+
1452
+
1558
1453
class BackendWxAgg (OptionalBackendPackage ):
1559
1454
name = "wxagg"
1560
1455
0 commit comments