"""
Read wheel forging config
"""
from __future__ import absolute_import
try:
from collections import OrderedDict
except:
from ordereddict import OrderedDict
import yaml
from six import iteritems
DEFAULT_C_IMAGESET = 'default-wheel'
DEFAULT_PUREPY_IMAGESET = 'purepy-wheel'
DEFAULT_CONFIG_FILE = 'wheels.yml'
[docs]class WheelConfig(object):
def __init__(self, name, global_config, config, imagesets, purepy=False):
self.name = name
self.config = config
self.purepy = purepy
self.version = str(config['version'])
self.sources = config.get('src', [])
self.prebuild = config.get('prebuild', None)
self.insert_setuptools = config.get('insert_setuptools', False)
self.force_pythons = config.get('force_pythons', None)
self.build_args = config.get('build_args', 'bdist_wheel')
self.buildpy = config.get('buildpy', 'python')
self.auditwheel_args = config.get('auditwheel_args', None)
self.delocate_args = config.get('delocate_args', None)
if not purepy:
default_imageset = DEFAULT_C_IMAGESET
else:
default_imageset = DEFAULT_PUREPY_IMAGESET
self.imageset = imagesets[config.get('imageset', default_imageset)]
self.images = self.imageset.images
[docs] def get_images(self):
return self.images
[docs] def get_image(self, name):
return self.images[name]
[docs] def get_dependencies(self, image):
if image is None:
return []
pkgtool = self.images[image].pkgtool
return self.config.get(pkgtool, [])
[docs]class WheelConfigManager(object):
[docs] @classmethod
def open(cls, global_config, config_file):
return cls(global_config, config_file=config_file)
def __init__(self, global_config, config_file=None):
self.global_config = global_config
self.__config_file = config_file
self.config = None
self.wheels = OrderedDict()
self.load_config()
@property
def config_file(self):
if self.__config_file is None:
return DEFAULT_CONFIG_FILE
return self.__config_file
[docs] def load_config(self):
self.config = yaml.safe_load(open(self.config_file).read())
for (name, wheel) in iteritems(self.config['packages']):
self.wheels[name] = WheelConfig(name, self.global_config, wheel,
self.global_config.imagesets,
purepy=False)
for (name, wheel) in iteritems(self.config['purepy_packages']):
self.wheels[name] = WheelConfig(name, self.global_config, wheel,
self.global_config.imagesets,
purepy=True)
[docs] def get_wheel_config(self, name):
return self.wheels[name]
[docs] def get_wheel_images(self, name):
return self.get_wheel_config(name).get_images()
def __iter__(self):
for name, wheel in iteritems(self.wheels):
yield name, wheel
def __getitem__(self, name):
return self.wheels[name]
def __contains__(self, name):
return name in self.wheels