[config] Adds __doc__ to option/service. Fix variable names in Option.__get__() that would have an unpredicatable behaviour in the rare case of using get on a type. Update to Medikit.

This commit is contained in:
Romain Dorgueil
2017-10-21 12:38:02 +02:00
parent 7c8625dda6
commit 866824db7c
5 changed files with 23 additions and 13 deletions

View File

@ -1,7 +1,5 @@
# This file has been auto-generated.
# All changes will be lost, see Projectfile.
#
# Updated at 2017-10-05 18:56:33.985014
# This file has been auto-generated by Medikit. All changes will be lost.
# Updated on 2017-10-21.
PACKAGE ?= bonobo
PYTHON ?= $(shell which python)
@ -22,7 +20,7 @@ YAPF ?= $(PYTHON) -m yapf
YAPF_OPTIONS ?= -rip
VERSION ?= $(shell git describe 2>/dev/null || echo dev)
.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test
.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test update update-requirements
# Installs the local project dependencies.
install:
@ -40,6 +38,16 @@ install-dev:
clean:
rm -rf build dist *.egg-info
# Update project artifacts using medikit, after installing it eventually.
update:
python -c 'import medikit; print(medikit.__version__)' || pip install medikit;
$(PYTHON) -m medikit update
# Remove requirements files and update project artifacts using medikit, after installing it eventually.
update-requirements:
rm -rf requirements*.txt
$(MAKE) update
test: install-dev
$(PYTEST) $(PYTEST_OPTIONS) tests

View File

@ -1,6 +1,6 @@
# bonobo (see github.com/python-edgy/project)
# bonobo's description for medikit
from edgy.project import require
from medikit import require
pytest = require('pytest')
python = require('python')

View File

@ -53,21 +53,23 @@ class Option:
_creation_counter = 0
def __init__(self, type=None, *, required=True, positional=False, default=None):
def __init__(self, type=None, *, required=True, positional=False, default=None, __doc__=None):
self.name = None
self.type = type
self.required = required if default is None else False
self.positional = positional
self.default = default
self.__doc__ = __doc__ or self.__doc__
# This hack is necessary for python3.5
self._creation_counter = Option._creation_counter
Option._creation_counter += 1
def __get__(self, inst, typ):
def __get__(self, inst, type_):
# XXX If we call this on the type, then either return overriden value or ... ???
if inst is None:
return vars(type).get(self.name, self)
return vars(type_).get(self.name, self)
if not self.name in inst._options_values:
inst._options_values[self.name] = self.get_default()

View File

@ -49,8 +49,8 @@ class Service(Option):
"""
def __init__(self, name):
super().__init__(str, required=False, default=name)
def __init__(self, name, __doc__=None):
super().__init__(str, required=False, default=name, __doc__=__doc__)
def __set__(self, inst, value):
inst._options_values[self.name] = validate_service_name(value)

View File

@ -1,4 +1,4 @@
# This file is autogenerated by edgy.project code generator.
# This file is autogenerated by medikit code generator.
# All changes will be overwritten.
from setuptools import setup, find_packages