Skip to content

Commit

Permalink
Starts to enable building packages that does not require python. Yay.
Browse files Browse the repository at this point in the history
  • Loading branch information
hartym committed Mar 16, 2018
1 parent 4ee5053 commit a491cca
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 9 deletions.
Empty file removed medikit/_require.py
Empty file.
2 changes: 1 addition & 1 deletion medikit/commands/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def handle(config_filename, **kwargs):
feature_instances = {}
logger.info(
'Updating {} with {} features'.format(
term.bold(config['python'].get('name')),
term.bold(config.package_name),
', '.join(term.bold(term.green(feature_name)) for feature_name in sorted(features))
)
)
Expand Down
4 changes: 3 additions & 1 deletion medikit/commands/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ def _read_configuration(dispatcher, config_filename):
if not os.path.exists(config_filename):
raise IOError('Could not find project description file (looked in {})'.format(config_filename))

variables = OrderedDict()
variables = dict(
PACKAGE=None
)

files = {filename: '' for filename in DEFAULT_FILES}
features = set(DEFAULT_FEATURES)
Expand Down
6 changes: 3 additions & 3 deletions medikit/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ def read_configuration(dispatcher, filename, variables, features, files):
# restore old values
medikit.listen, medikit.pipeline, medikit.require = _listen, _pipeline, _require

for k in variables.keys():
if k in context:
variables[k] = context[k]
# Deprecated, but can be used for non-python projects (PACKAGE=...)
variables = {k: context.get(k, v) for k, v in variables.items()}
config.set_vars(**variables)

for feature in DEFAULT_FEATURES:
config.require(feature)
Expand Down
27 changes: 26 additions & 1 deletion medikit/config/registry.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from collections import OrderedDict
from contextlib import contextmanager

from stevedore import ExtensionManager
Expand All @@ -10,6 +11,7 @@ def __init__(self):
self._configs = {}
self._features = {}
self._pipelines = {}
self._variables = OrderedDict()

def register_feature(ext):
self._features[ext.name] = ext.plugin
Expand All @@ -20,6 +22,29 @@ def register_feature(ext):
def __getitem__(self, item):
return self._configs[item]

def __contains__(self, item):
return item in self._configs

def set_vars(self, **variables):
self._variables.update(variables)

def get_var(self, name, default=None):
return self._variables.get(name, default)

@property
def variables(self):
return self._variables

@property
def package_name(self):
if 'python' in self:
return self['python'].get('name')
else:
name = self.get_var('PACKAGE')
if not name:
raise RuntimeError('You must define a package name, using either python.setup() or PACKAGE = ...')
return name

def keys(self):
return self._configs.keys()

Expand Down Expand Up @@ -47,4 +72,4 @@ def _require(self, name):
if name not in self._configs:
self._configs[name] = self._features[name].Config()

return self._configs[name]
return self._configs[name]
5 changes: 3 additions & 2 deletions medikit/feature/make.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ def on_start(self, event):
"""
:param ProjectEvent event:
"""

for k in event.variables:
self.makefile[k.upper()] = event.variables[k]

Expand All @@ -363,7 +364,7 @@ def on_start(self, event):
'update',
'''
python -c 'import medikit; print(medikit.__version__)' || pip install medikit;
$(PYTHON) -m medikit update
python -m medikit update
''',
phony=True,
doc='''Update project artifacts using medikit, after installing it eventually.'''
Expand All @@ -381,7 +382,7 @@ def on_start(self, event):
)

self.dispatcher.dispatch(
MakeConfig.on_generate, MakefileEvent(event.config['python'].get('name'), self.makefile, event.config)
MakeConfig.on_generate, MakefileEvent(event.config.package_name, self.makefile, event.config)
)
# Recipe courtesy of https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
self.makefile.add_target(
Expand Down
2 changes: 1 addition & 1 deletion medikit/feature/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ def on_make_generate(self, event):
event.makefile.updateleft(
(
'PACKAGE',
event.package_name,
event.config.package_name,
),
(
'PYTHON',
Expand Down

0 comments on commit a491cca

Please sign in to comment.