Merge pull request #7 from chfw/dev

release 0.0.5
This commit is contained in:
jaska 2018-11-06 18:38:14 +00:00 committed by GitHub
commit 8d1af6e0ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 753 additions and 677 deletions

10
.isort.cfg Normal file
View File

@ -0,0 +1,10 @@
[settings]
line_length=79
known_first_party=
known_third_party=mock,nose
indent=' '
multi_line_output=3
length_sort=1
default_section=FIRSTPARTY
no_lines_before=LOCALFOLDER
sections=FUTURE,STDLIB,FIRSTPARTY,THIRDPARTY,LOCALFOLDER

View File

@ -10,7 +10,7 @@
{%endif%}
{%endif%}
pip freeze
nosetests --with-cov --cover-package {{package|lower}} --cover-package tests {%if not exclude_doctest%}--with-doctest --doctest-extension=.rst README.rst{%endif%} tests {%if not nodocs%}docs/source{%endif%} {%if not external_module_library%}{{package|lower}}{%endif%} && flake8 . --exclude=.moban.d {%block flake8_options%}--builtins=unicode,xrange,long{%endblock%}
nosetests --with-cov --cover-package {{package|lower}} --cover-package tests {%if not exclude_doctest%}--with-doctest --doctest-extension=.rst README.rst{%endif%} tests {%if not nodocs%}docs/source{%endif%} {%if not external_module_library%}{{package|lower}}{%endif%} && flake8 . --exclude=.moban.d,docs {%block flake8_options%}--builtins=unicode,xrange,long{%endblock%}
{%block posttest%}
{%endblock%}

View File

@ -1,6 +1,10 @@
requires:
- type: git
url: https://github.com/moremoban/pypi-mobans
submodule: true
configuration:
template_dir:
- "setupmobans/templates"
- "pypi-mobans:templates"
- ".moban.d"
configuration: lml.yml
targets:

View File

@ -3,10 +3,10 @@ language: python
notifications:
email: false
python:
- 3.7-dev
- 3.6
- 3.5
- 3.4
- 3.3
- 2.7
- pypy
before_install:

View File

@ -1,6 +1,15 @@
Change log
================================================================================
0.0.5 - 06/11/2018
--------------------------------------------------------------------------------
Fixed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. `#6 <https://github.com/chfw/lml/issues/6>`_: Catch and Ignore
ModuleNotFoundError
0.0.4 - 07.08.2018
--------------------------------------------------------------------------------

View File

@ -12,3 +12,9 @@ spelling:
uml:
plantuml -tsvg -o ../_static/images/ docs/source/uml/*.uml
format:
isort -y $(find lml -name "*.py"|xargs echo) $(find tests -name "*.py"|xargs echo)
black -l 79 lml
black -l 79 tests
black -l 79 examples

View File

@ -1,11 +1,17 @@
name: lml
organisation: chfw
releases:
- changes:
- action: Fixed
details:
- "`#6`: Catch and Ignore ModuleNotFoundError"
date: 06/11/2018
version: 0.0.5
- changes:
- action: Added
details:
- "`#4`: to find plugin names with different naming patterns"
date: 07.08.2018
date: 07.08.2018
version: 0.0.4
- changes:
- action: Added

View File

@ -28,9 +28,9 @@ copyright = u'2017-2018 Onni Software Ltd.'
author = u'C.W.'
# The short X.Y version
version = u'0.0.4'
version = u'0.0.5'
# The full version, including alpha/beta/rc tags
release = u'0.0.4'
release = u'0.0.5'
# -- General configuration ---------------------------------------------------
@ -42,12 +42,7 @@ release = u'0.0.4'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
]
extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode',]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@ -74,7 +69,7 @@ language = 'en'
exclude_patterns = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
pygments_style = None
# -- Options for HTML output -------------------------------------------------
@ -162,6 +157,24 @@ texinfo_documents = [
'Miscellaneous'),
]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# -- Extension configuration -------------------------------------------------
# -- Options for intersphinx extension ---------------------------------------

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'Sample project to demonstrate load me later plugin system' +
''
)
DESCRIPTION = "Sample project to demonstrate load me later plugin system" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchefdoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchefdoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef.tex',
'robotchef Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef.tex",
"robotchef Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef',
'robotchef Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef",
"robotchef Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef',
'robotchef Documentation',
'Onni Software Ltd.', 'robotchef',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef",
"robotchef Documentation",
"Onni Software Ltd.",
"robotchef",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -1,16 +1,17 @@
import sys
from lml.loader import scan_plugins
from robotchef.plugin import CuisineManager, NoChefException
import logging
import logging.config
logging.basicConfig(
format='%(name)s:%(lineno)d - %(levelname)s - %(message)s',
level=logging.DEBUG)
from robotchef.plugin import CuisineManager, NoChefException
BUILTINS = ['robotchef.robot_cuisine']
from lml.loader import scan_plugins
logging.basicConfig(
format="%(name)s:%(lineno)d - %(levelname)s - %(message)s",
level=logging.DEBUG,
)
BUILTINS = ["robotchef.robot_cuisine"]
def main():
@ -18,7 +19,7 @@ def main():
sys.exit(-1)
cuisine_manager = CuisineManager()
scan_plugins("robotchef_", 'robotchef', white_list=BUILTINS)
scan_plugins("robotchef_", "robotchef", white_list=BUILTINS)
food_name = sys.argv[1]
try:

View File

@ -17,6 +17,5 @@ class CuisineManager(PluginManager):
class Chef(object):
def make(self, **params):
print("I am a chef")

View File

@ -2,7 +2,5 @@ from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'electrify.Boost',
tags=['Portable Battery']
"cuisine", "electrify.Boost", tags=["Portable Battery"]
)

View File

@ -2,6 +2,5 @@ from robotchef.plugin import Chef
class Boost(Chef):
def make(self, food=None, **keywords):
print("I can cook %s for robots" % food)

View File

@ -2,47 +2,38 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc (c) hotmail.com'
LICENSE = 'MIT'
ENTRY_POINTS = {
'console_scripts': [
'robotchef = robotchef.main:main'
]
}
DESCRIPTION = (
'Sample project to demonstrate load me later plugin system' +
''
)
KEYWORDS = [
]
NAME = "robotchef"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc (c) hotmail.com"
LICENSE = "MIT"
ENTRY_POINTS = {"console_scripts": ["robotchef = robotchef.main:main"]}
DESCRIPTION = "Sample project to demonstrate load me later plugin system" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
'lml',
]
INSTALL_REQUIRES = ["lml"]
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
EXTRAS_REQUIRE = {
}
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
def read_files(*files):
@ -56,7 +47,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -65,11 +56,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -82,22 +73,22 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
entry_points=ENTRY_POINTS,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,6 +1,8 @@
import sys
from mock import patch
from nose.tools import eq_
PY2 = sys.version_info[0] == 2
if PY2:
@ -9,10 +11,11 @@ else:
from io import StringIO
@patch('sys.stdout', new_callable=StringIO)
@patch("sys.stdout", new_callable=StringIO)
def test_peking_duck(stdout):
arguments = ['robotchef', 'Peking Duck']
arguments = ["robotchef", "Peking Duck"]
from robotchef.main import main
with patch.object(sys, 'argv', arguments):
with patch.object(sys, "argv", arguments):
main()
eq_(stdout.getvalue(), 'I can roast Peking Duck\n')
eq_(stdout.getvalue(), "I can roast Peking Duck\n")

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'It does cooking' +
''
)
DESCRIPTION = "It does cooking" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_allinone'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_allinone"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_allinonedoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_allinonedoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_allinone.tex',
'robotchef_allinone Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_allinone.tex",
"robotchef_allinone Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_allinone',
'robotchef_allinone Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_allinone",
"robotchef_allinone Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_allinone',
'robotchef_allinone Documentation',
'Onni Software Ltd.', 'robotchef_allinone',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_allinone",
"robotchef_allinone Documentation",
"Onni Software Ltd.",
"robotchef_allinone",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -3,25 +3,21 @@ class NoChefException(Exception):
class Chef(object):
def make(self, **params):
print("I am a chef")
class Boost(Chef):
def make(self, food=None, **keywords):
print("I can cook %s for robots" % food)
class Fry(Chef):
def make(self, food=None):
print("I can fry " + food)
class Bake(Chef):
def make(self, food=None):
print("I can bake " + food)
@ -30,7 +26,7 @@ PLUGINS = {
"Portable Battery": Boost,
"Fish and Chips": Fry,
"Cornish Scone": Bake,
"Jacket Potato": Bake
"Jacket Potato": Bake,
}

View File

@ -2,44 +2,39 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_allinone'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (at) hotmail.com'
LICENSE = 'MIT'
NAME = "robotchef_allinone"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (at) hotmail.com"
LICENSE = "MIT"
ENTRY_POINTS = {
'console_scripts': [
'robotchef_allinone = robotchef_allinone.main:main'
]
"console_scripts": ["robotchef_allinone = robotchef_allinone.main:main"]
}
DESCRIPTION = (
'It does cooking' +
''
)
KEYWORDS = [
]
DESCRIPTION = "It does cooking" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -54,7 +49,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -63,11 +58,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -80,22 +75,22 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
entry_points=ENTRY_POINTS,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,6 +1,8 @@
import sys
from mock import patch
from nose.tools import eq_
PY2 = sys.version_info[0] == 2
if PY2:
@ -9,10 +11,11 @@ else:
from io import StringIO
@patch('sys.stdout', new_callable=StringIO)
@patch("sys.stdout", new_callable=StringIO)
def test_cornish_scone(stdout):
arguments = ['robotchef', 'Cornish Scone']
arguments = ["robotchef", "Cornish Scone"]
from robotchef_allinone.main import main
with patch.object(sys, 'argv', arguments):
with patch.object(sys, "argv", arguments):
main()
eq_(stdout.getvalue(), 'I can bake Cornish Scone\n')
eq_(stdout.getvalue(), "I can bake Cornish Scone\n")

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'it cook food' +
''
)
DESCRIPTION = "it cook food" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_allinone_lml'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_allinone_lml"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_allinone_lmldoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_allinone_lmldoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_allinone_lml.tex',
'robotchef_allinone_lml Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_allinone_lml.tex",
"robotchef_allinone_lml Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_allinone_lml',
'robotchef_allinone_lml Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_allinone_lml",
"robotchef_allinone_lml Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_allinone_lml',
'robotchef_allinone_lml Documentation',
'Onni Software Ltd.', 'robotchef_allinone_lml',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_allinone_lml",
"robotchef_allinone_lml Documentation",
"Onni Software Ltd.",
"robotchef_allinone_lml",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -1,4 +1,4 @@
from lml.plugin import PluginManager, PluginInfo
from lml.plugin import PluginInfo, PluginManager
class NoChefException(Exception):
@ -17,27 +17,23 @@ class CuisineManager(PluginManager):
class Chef(object):
def make(self, **params):
print("I am a chef")
@PluginInfo('cuisine', tags=['Portable Battery'])
@PluginInfo("cuisine", tags=["Portable Battery"])
class Boost(Chef):
def make(self, food=None, **keywords):
print("I can cook %s for robots" % food)
@PluginInfo('cuisine', tags=['Fish and Chips'])
@PluginInfo("cuisine", tags=["Fish and Chips"])
class Fry(Chef):
def make(self, food=None):
print("I can fry " + food)
@PluginInfo('cuisine', tags=['Cornish Scone', 'Jacket Potato'])
@PluginInfo("cuisine", tags=["Cornish Scone", "Jacket Potato"])
class Bake(Chef):
def make(self, food=None):
print("I can bake " + food)

View File

@ -2,44 +2,41 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_allinone_lml'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (at) hotmail.com'
LICENSE = 'MIT'
NAME = "robotchef_allinone_lml"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (at) hotmail.com"
LICENSE = "MIT"
ENTRY_POINTS = {
'console_scripts': [
'robotchef_allinone_lml = robotchef_allinone_lml.main:main'
"console_scripts": [
"robotchef_allinone_lml = robotchef_allinone_lml.main:main"
]
}
DESCRIPTION = (
'it cook food' +
''
)
KEYWORDS = [
]
DESCRIPTION = "it cook food" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -54,7 +51,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -63,11 +60,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -80,22 +77,22 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
entry_points=ENTRY_POINTS,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,6 +1,8 @@
import sys
from mock import patch
from nose.tools import eq_
PY2 = sys.version_info[0] == 2
if PY2:
@ -9,10 +11,11 @@ else:
from io import StringIO
@patch('sys.stdout', new_callable=StringIO)
@patch("sys.stdout", new_callable=StringIO)
def test_cornish_scone(stdout):
arguments = ['robotchef', 'Cornish Scone']
arguments = ["robotchef", "Cornish Scone"]
from robotchef_allinone_lml.main import main
with patch.object(sys, 'argv', arguments):
with patch.object(sys, "argv", arguments):
main()
eq_(stdout.getvalue(), 'I can bake Cornish Scone\n')
eq_(stdout.getvalue(), "I can bake Cornish Scone\n")

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'Cook food in british cuisine.' +
''
)
DESCRIPTION = "Cook food in british cuisine." + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_britishcuisine'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_britishcuisine"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_britishcuisinedoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_britishcuisinedoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_britishcuisine.tex',
'robotchef_britishcuisine Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_britishcuisine.tex",
"robotchef_britishcuisine Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_britishcuisine',
'robotchef_britishcuisine Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_britishcuisine",
"robotchef_britishcuisine Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_britishcuisine',
'robotchef_britishcuisine Documentation',
'Onni Software Ltd.', 'robotchef_britishcuisine',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_britishcuisine",
"robotchef_britishcuisine Documentation",
"Onni Software Ltd.",
"robotchef_britishcuisine",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -2,11 +2,5 @@ from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'fry.Fry',
tags=['Fish and Chips']
).add_a_plugin(
'cuisine',
'bake.Bake',
tags=['Cornish Scone', 'Jacket Potato']
)
"cuisine", "fry.Fry", tags=["Fish and Chips"]
).add_a_plugin("cuisine", "bake.Bake", tags=["Cornish Scone", "Jacket Potato"])

View File

@ -2,6 +2,5 @@ from robotchef.plugin import Chef
class Bake(Chef):
def make(self, food=None):
print("I can bake " + food)

View File

@ -2,6 +2,5 @@ from robotchef.plugin import Chef
class Fry(Chef):
def make(self, food=None):
print("I can fry " + food)

View File

@ -2,39 +2,36 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_britishcuisine'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (c) hotmail.com'
LICENSE = 'MIT'
DESCRIPTION = (
'Cook food in british cuisine.' +
''
)
KEYWORDS = [
]
NAME = "robotchef_britishcuisine"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (c) hotmail.com"
LICENSE = "MIT"
DESCRIPTION = "Cook food in british cuisine." + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -49,7 +46,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -58,11 +55,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -75,21 +72,21 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'It cooks Chinese food' +
''
)
DESCRIPTION = "It cooks Chinese food" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_chinesecuisine'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_chinesecuisine"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_chinesecuisinedoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_chinesecuisinedoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_chinesecuisine.tex',
'robotchef_chinesecuisine Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_chinesecuisine.tex",
"robotchef_chinesecuisine Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_chinesecuisine',
'robotchef_chinesecuisine Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_chinesecuisine",
"robotchef_chinesecuisine Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_chinesecuisine',
'robotchef_chinesecuisine Documentation',
'Onni Software Ltd.', 'robotchef_chinesecuisine',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_chinesecuisine",
"robotchef_chinesecuisine Documentation",
"Onni Software Ltd.",
"robotchef_chinesecuisine",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -2,7 +2,5 @@ from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'roast.Roast',
tags=['Peking Duck']
"cuisine", "roast.Roast", tags=["Peking Duck"]
)

View File

@ -2,6 +2,5 @@ from robotchef.plugin import Chef
class Roast(Chef):
def make(self, food=None):
print("I can roast " + food)

View File

@ -2,39 +2,36 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_chinesecuisine'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (c) hotmail.com'
LICENSE = 'MIT'
DESCRIPTION = (
'It cooks Chinese food' +
''
)
KEYWORDS = [
]
NAME = "robotchef_chinesecuisine"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (c) hotmail.com"
LICENSE = "MIT"
DESCRIPTION = "It cooks Chinese food" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -49,7 +46,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -58,11 +55,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -75,21 +72,21 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'Make robot chef to cook' +
''
)
DESCRIPTION = "Make robot chef to cook" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_cook'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_cook"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_cookdoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_cookdoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_cook.tex',
'robotchef_cook Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_cook.tex",
"robotchef_cook Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_cook',
'robotchef_cook Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_cook",
"robotchef_cook Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_cook',
'robotchef_cook Documentation',
'Onni Software Ltd.', 'robotchef_cook',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_cook",
"robotchef_cook Documentation",
"Onni Software Ltd.",
"robotchef_cook",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -1,8 +1,4 @@
from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'cook.Cook',
tags=['bread']
)
PluginInfoChain(__name__).add_a_plugin("cuisine", "cook.Cook", tags=["bread"])

View File

@ -2,6 +2,5 @@ from robotchef.plugin import Chef
class Cook(Chef):
def make(self, food=None):
print("I can cook " + food)

View File

@ -2,39 +2,36 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_cook'
AUTHOR = 'C.W'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (at) hotmail.com'
LICENSE = 'MIT'
DESCRIPTION = (
'Make robot chef to cook' +
''
)
KEYWORDS = [
]
NAME = "robotchef_cook"
AUTHOR = "C.W"
VERSION = "0.0.1"
EMAIL = "wangc_2011 (at) hotmail.com"
LICENSE = "MIT"
DESCRIPTION = "Make robot chef to cook" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -49,7 +46,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -58,11 +55,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -75,21 +72,21 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'It provide the cusine knowledge to any library' +
''
)
DESCRIPTION = "It provide the cusine knowledge to any library" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_api'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_api"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_apidoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_apidoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_api.tex',
'robotchef_api Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_api.tex",
"robotchef_api Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_api',
'robotchef_api Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_api",
"robotchef_api Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_api',
'robotchef_api Documentation',
'Onni Software Ltd.', 'robotchef_api',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_api",
"robotchef_api Documentation",
"Onni Software Ltd.",
"robotchef_api",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -1,9 +1,9 @@
from lml.loader import scan_plugins
from robotchef_api.plugin import CuisineManager, NoChefException # flake8: noqa
from robotchef_api.plugin import CuisineManager, NoChefException # noqa: F401
BUILTINS = ['robotchef_api.robot_cuisine']
BUILTINS = ["robotchef_api.robot_cuisine"]
scan_plugins("robotchef_", __path__, white_list=BUILTINS)
scan_plugins("robotchef_", __path__, white_list=BUILTINS) # noqa: F821
cuisine_manager = CuisineManager()

View File

@ -17,6 +17,5 @@ class CuisineManager(PluginManager):
class Chef(object):
def make(self, **params):
print(self.name)

View File

@ -2,7 +2,5 @@ from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'electricity.Boost',
tags=['Portable Battery']
"cuisine", "electricity.Boost", tags=["Portable Battery"]
)

View File

@ -2,6 +2,5 @@ from robotchef_api.plugin import Chef
class Boost(Chef):
def make(self, food=None, **keywords):
print("I can cook %s for robots" % food)

View File

@ -2,42 +2,37 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_api'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (at) hotmail.com'
LICENSE = 'MIT'
DESCRIPTION = (
'It provide the cusine knowledge to any library' +
''
)
KEYWORDS = [
]
NAME = "robotchef_api"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (at) hotmail.com"
LICENSE = "MIT"
DESCRIPTION = "It provide the cusine knowledge to any library" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
'lml',
]
INSTALL_REQUIRES = ["lml"]
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
EXTRAS_REQUIRE = {
}
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
def read_files(*files):
@ -51,7 +46,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -60,11 +55,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -77,21 +72,21 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'Cook food in british cuisine.' +
''
)
DESCRIPTION = "Cook food in british cuisine." + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_britishcuisine'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_britishcuisine"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_britishcuisinedoc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_britishcuisinedoc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_britishcuisine.tex',
'robotchef_britishcuisine Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_britishcuisine.tex",
"robotchef_britishcuisine Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_britishcuisine',
'robotchef_britishcuisine Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_britishcuisine",
"robotchef_britishcuisine Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_britishcuisine',
'robotchef_britishcuisine Documentation',
'Onni Software Ltd.', 'robotchef_britishcuisine',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_britishcuisine",
"robotchef_britishcuisine Documentation",
"Onni Software Ltd.",
"robotchef_britishcuisine",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -2,11 +2,5 @@ from lml.plugin import PluginInfoChain
PluginInfoChain(__name__).add_a_plugin(
'cuisine',
'fry.Fry',
tags=['Fish and Chips']
).add_a_plugin(
'cuisine',
'bake.Bake',
tags=['Cornish Scone', 'Jacket Potato']
)
"cuisine", "fry.Fry", tags=["Fish and Chips"]
).add_a_plugin("cuisine", "bake.Bake", tags=["Cornish Scone", "Jacket Potato"])

View File

@ -2,6 +2,5 @@ from robotchef_api.plugin import Chef
class Bake(Chef):
def make(self, food=None):
print("I can bake " + food)

View File

@ -2,6 +2,5 @@ from robotchef_api.plugin import Chef
class Fry(Chef):
def make(self, food=None):
print("I can fry " + food)

View File

@ -2,39 +2,36 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_britishcuisine'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (c) hotmail.com'
LICENSE = 'MIT'
DESCRIPTION = (
'Cook food in british cuisine.' +
''
)
KEYWORDS = [
]
NAME = "robotchef_britishcuisine"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (c) hotmail.com"
LICENSE = "MIT"
DESCRIPTION = "Cook food in british cuisine." + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -49,7 +46,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -58,11 +55,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -75,21 +72,21 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,43 +1,52 @@
# -*- coding: utf-8 -*-
DESCRIPTION = (
'It understands world cuisine' +
''
)
DESCRIPTION = "It understands world cuisine" + ""
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
project = u'robotchef_v2'
copyright = u'2017 Onni Software Ltd.'
version = '0.0.1'
release = '0.0.1'
project = u"robotchef_v2"
copyright = u"2017 Onni Software Ltd."
version = "0.0.1"
release = "0.0.1"
exclude_patterns = []
pygments_style = 'sphinx'
html_theme = 'default'
html_static_path = ['_static']
htmlhelp_basename = 'robotchef_v2doc'
pygments_style = "sphinx"
html_theme = "default"
html_static_path = ["_static"]
htmlhelp_basename = "robotchef_v2doc"
latex_elements = {}
latex_documents = [
('index', 'robotchef_v2.tex',
'robotchef_v2 Documentation',
'Onni Software Ltd.', 'manual'),
(
"index",
"robotchef_v2.tex",
"robotchef_v2 Documentation",
"Onni Software Ltd.",
"manual",
)
]
man_pages = [
('index', 'robotchef_v2',
'robotchef_v2 Documentation',
[u'Onni Software Ltd.'], 1)
(
"index",
"robotchef_v2",
"robotchef_v2 Documentation",
[u"Onni Software Ltd."],
1,
)
]
texinfo_documents = [
('index', 'robotchef_v2',
'robotchef_v2 Documentation',
'Onni Software Ltd.', 'robotchef_v2',
DESCRIPTION,
'Miscellaneous'),
(
"index",
"robotchef_v2",
"robotchef_v2 Documentation",
"Onni Software Ltd.",
"robotchef_v2",
DESCRIPTION,
"Miscellaneous",
)
]

View File

@ -1,6 +1,6 @@
import sys
from robotchef_api import cuisine_manager, NoChefException
from robotchef_api import NoChefException, cuisine_manager
def main():

View File

@ -2,44 +2,37 @@ try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
import sys
PY2 = sys.version_info[0] == 2
PY26 = PY2 and sys.version_info[1] < 7
NAME = 'robotchef_v2'
AUTHOR = 'C.W.'
VERSION = '0.0.1'
EMAIL = 'wangc_2011 (at) hotmail.com'
LICENSE = 'MIT'
ENTRY_POINTS = {
'console_scripts': [
'robotchef_v2 = robotchef_v2.main:main'
]
}
DESCRIPTION = (
'It understands world cuisine' +
''
)
KEYWORDS = [
]
NAME = "robotchef_v2"
AUTHOR = "C.W."
VERSION = "0.0.1"
EMAIL = "wangc_2011 (at) hotmail.com"
LICENSE = "MIT"
ENTRY_POINTS = {"console_scripts": ["robotchef_v2 = robotchef_v2.main:main"]}
DESCRIPTION = "It understands world cuisine" + ""
KEYWORDS = []
CLASSIFIERS = [
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
]
INSTALL_REQUIRES = [
]
INSTALL_REQUIRES = []
PACKAGES = find_packages(exclude=['ez_setup', 'examples', 'tests'])
PACKAGES = find_packages(exclude=["ez_setup", "examples", "tests"])
EXTRAS_REQUIRE = {}
@ -54,7 +47,7 @@ def read_files(*files):
def read(afile):
"""Read a file into setup"""
with open(afile, 'r') as opened_file:
with open(afile, "r") as opened_file:
content = filter_out_test_code(opened_file)
content = "".join(list(content))
return content
@ -63,11 +56,11 @@ def read(afile):
def filter_out_test_code(file_handle):
found_test_code = False
for line in file_handle.readlines():
if line.startswith('.. testcode:'):
if line.startswith(".. testcode:"):
found_test_code = True
continue
if found_test_code is True:
if line.startswith(' '):
if line.startswith(" "):
continue
else:
empty_line = line.strip()
@ -80,22 +73,22 @@ def filter_out_test_code(file_handle):
yield line
if __name__ == '__main__':
if __name__ == "__main__":
setup(
name=NAME,
author=AUTHOR,
version=VERSION,
author_email=EMAIL,
description=DESCRIPTION,
long_description=read_files('README.rst', 'CHANGELOG.rst'),
long_description=read_files("README.rst", "CHANGELOG.rst"),
license=LICENSE,
keywords=KEYWORDS,
extras_require=EXTRAS_REQUIRE,
tests_require=['nose'],
tests_require=["nose"],
install_requires=INSTALL_REQUIRES,
packages=PACKAGES,
include_package_data=True,
zip_safe=False,
entry_points=ENTRY_POINTS,
classifiers=CLASSIFIERS
classifiers=CLASSIFIERS,
)

View File

@ -1,6 +1,8 @@
import sys
from mock import patch
from nose.tools import eq_
PY2 = sys.version_info[0] == 2
if PY2:
@ -9,10 +11,11 @@ else:
from io import StringIO
@patch('sys.stdout', new_callable=StringIO)
@patch("sys.stdout", new_callable=StringIO)
def test_peking_duck(stdout):
arguments = ['robotchef', 'Jacket Potato']
arguments = ["robotchef", "Jacket Potato"]
from robotchef_v2.main import main
with patch.object(sys, 'argv', arguments):
with patch.object(sys, "argv", arguments):
main()
eq_(stdout.getvalue(), 'I can bake Jacket Potato\n')
eq_(stdout.getvalue(), "I can bake Jacket Potato\n")

View File

@ -4,9 +4,9 @@ organisation: "chfw"
author: "C.W."
contact: "wangc_2011@hotmail.com"
company: "Onni Software Ltd."
version: "0.0.4"
current_version: "0.0.4"
release: "0.0.4"
version: "0.0.5"
current_version: "0.0.5"
release: "0.0.5"
copyright_year: 2017-2018
license: New BSD
dependencies: []

View File

@ -8,8 +8,8 @@
:license: New BSD License, see LICENSE for more details
"""
import logging
from lml._version import __version__ # flake8: noqa
from lml._version import __author__ # flake8: noqa
from lml._version import __version__ # noqa: F401
from lml._version import __author__ # noqa: F401
try:
from logging import NullHandler

View File

@ -1,2 +1,2 @@
__version__ = "0.0.4"
__version__ = "0.0.5"
__author__ = "C.W."

View File

@ -10,11 +10,11 @@
:license: New BSD License, see LICENSE for more details
"""
import re
import pkgutil
import logging
import pkgutil
from itertools import chain
from lml.utils import do_import
from lml.utils import do_import
log = logging.getLogger(__name__)

View File

@ -28,9 +28,7 @@
import logging
from collections import defaultdict
from lml.utils import do_import_class
from lml.utils import json_dumps
from lml.utils import json_dumps, do_import_class
PLUG_IN_MANAGERS = {}
CACHED_PLUGIN_INFO = defaultdict(list)

View File

@ -9,10 +9,10 @@
"""
import sys
import logging
from json import dumps, JSONEncoder
from json import JSONEncoder, dumps
PY2 = sys.version_info[0] == 2
PY36 = sys.version_info[0] == 3 and sys.version_info[1] >= 6
log = logging.getLogger(__name__)
@ -39,17 +39,26 @@ def json_dumps(keywords):
def do_import(plugin_module_name):
"""dynamically import a module"""
try:
plugin_module = __import__(plugin_module_name)
if "." in plugin_module_name:
modules = plugin_module_name.split(".")
for module in modules[1:]:
plugin_module = getattr(plugin_module, module)
log.debug("found " + plugin_module_name)
return plugin_module
except ImportError:
log.exception("failed to import %s", plugin_module_name)
raise
if PY36:
try:
return _do_import(plugin_module_name)
except (ImportError, ModuleNotFoundError): # noqa: F821
log.exception("failed to import %s", plugin_module_name)
else:
try:
return _do_import(plugin_module_name)
except ImportError:
log.exception("failed to import %s", plugin_module_name)
def _do_import(plugin_module_name):
plugin_module = __import__(plugin_module_name)
if "." in plugin_module_name:
modules = plugin_module_name.split(".")
for module in modules[1:]:
plugin_module = getattr(plugin_module, module)
log.debug("found " + plugin_module_name)
return plugin_module
def do_import_class(plugin_class):

View File

@ -11,17 +11,17 @@ PY26 = PY2 and sys.version_info[1] < 7
NAME = 'lml'
AUTHOR = 'C.W.'
VERSION = '0.0.4'
VERSION = '0.0.5'
EMAIL = 'wangc_2011@hotmail.com'
LICENSE = 'New BSD'
DESCRIPTION = (
'Load me later. A lazy plugin management system.'
)
URL = 'https://github.com/chfw/lml'
DOWNLOAD_URL = '%s/archive/0.0.4.tar.gz' % URL
DOWNLOAD_URL = '%s/archive/0.0.5.tar.gz' % URL
FILES = ['README.rst', 'CHANGELOG.rst']
KEYWORDS = [
'python'
'python',
]
CLASSIFIERS = [
@ -46,8 +46,8 @@ EXTRAS_REQUIRE = {}
# You do not need to read beyond this line
PUBLISH_COMMAND = '{0} setup.py sdist bdist_wheel upload -r pypi'.format(
sys.executable)
GS_COMMAND = ('gs lml v0.0.4 ' +
"Find 0.0.4 in changelog for more details")
GS_COMMAND = ('gs lml v0.0.5 ' +
"Find 0.0.5 in changelog for more details")
NO_GS_MESSAGE = ('Automatic github release is disabled. ' +
'Please install gease to enable it.')
UPLOAD_FAILED_MSG = (

View File

@ -1,2 +1,2 @@
pip freeze
nosetests --with-cov --cover-package lml --cover-package tests --with-doctest --doctest-extension=.rst README.rst tests docs/source lml && flake8 . --exclude=.moban.d --builtins=unicode,xrange,long
nosetests --with-cov --cover-package lml --cover-package tests --with-doctest --doctest-extension=.rst README.rst tests docs/source lml && flake8 . --exclude=.moban.d,docs --builtins=unicode,xrange,long

View File

@ -4,3 +4,5 @@ codecov
coverage
flake8
six
black;python_version>="3.6"
isort;python_version>="3.6"

View File

@ -1,5 +1,6 @@
from lml.plugin import PluginInfo
import json
from lml.plugin import PluginInfo
from nose.tools import eq_

View File

@ -1,7 +1,11 @@
from mock import patch
from lml.plugin import PluginManager, PLUG_IN_MANAGERS
from lml.plugin import PluginInfo, _show_me_your_name
from lml.plugin import CACHED_PLUGIN_INFO
from lml.plugin import (
PLUG_IN_MANAGERS,
CACHED_PLUGIN_INFO,
PluginInfo,
PluginManager,
_show_me_your_name,
)
from nose.tools import eq_, raises

View File

@ -1,7 +1,7 @@
from mock import patch
from lml.utils import do_import, json_dumps
from lml.plugin import PluginManager
from nose.tools import eq_, raises
from lml.utils import json_dumps
from lml.utils import do_import
from nose.tools import eq_
def test_json_dumps():
@ -27,9 +27,10 @@ def test_do_import_2():
eq_(plugin, themodule)
@raises(ImportError)
def test_do_import_error():
@patch("lml.utils.log.exception")
def test_do_import_error(mock_exception):
do_import("non.exist")
mock_exception.assert_called_with("failed to import %s", "non.exist")
def test_do_import_cls():