From 112d6269d72ca63d5cbb34277f05f5e508b4a967 Mon Sep 17 00:00:00 2001 From: Jonathan Grizou Date: Fri, 28 Jun 2013 10:43:32 +0200 Subject: [PATCH 01/14] =?UTF-8?q?Verification=20probl=C3=A8me=20decoration?= =?UTF-8?q?=20event=20dans=20classe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- papers/plugs/texnote/texnote.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/papers/plugs/texnote/texnote.py b/papers/plugs/texnote/texnote.py index da26383..2b6952b 100644 --- a/papers/plugs/texnote/texnote.py +++ b/papers/plugs/texnote/texnote.py @@ -38,6 +38,10 @@ class TexnotePlugin(PapersPlugin): def toto(self): print "toto" + @RemoveEvent.listen() + def testEvent(self, rmevent): + print "testEvent" + @RemoveEvent.listen() def remove(rmevent): From 13bd18cda96ed14b54a4a6b02e19a800efc799c3 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Fri, 28 Jun 2013 17:22:43 +0200 Subject: [PATCH 02/14] working fs replacement enabling use case testing. papers content was mostly moved to papers_cmd.py You can now use papers_cmd.execute('papers tag Page99'.split()) from the code --- papers/papers | 49 ++--------------------------------------- papers/papers_cmd.py | 51 +++++++++++++++++++++++++++++++++++++++++++ tests/test_usecase.py | 36 ++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 47 deletions(-) create mode 100644 papers/papers_cmd.py create mode 100644 tests/test_usecase.py diff --git a/papers/papers b/papers/papers index 89c78de..eeed970 100755 --- a/papers/papers +++ b/papers/papers @@ -1,50 +1,5 @@ #!/usr/bin/env python2 # -*- coding:utf-8 -*- - -import argparse -import collections - -from papers.ui import UI -from papers import configs -from papers import commands -from papers import plugin - -cmds = collections.OrderedDict([ - ('init', commands.init_cmd), - ('add', commands.add_cmd), - ('add_library', commands.add_library_cmd), - ('import', commands.import_cmd), - ('export', commands.export_cmd), - ('list', commands.list_cmd), - ('edit', commands.edit_cmd), - ('remove', commands.remove_cmd), - ('open', commands.open_cmd), - ('websearch', commands.websearch_cmd), - ('tag', commands.tag_cmd), - ('attach', commands.attach_cmd), - ('update', commands.update_cmd), - ]) - -config = configs.read_config() -ui = UI(config) - -# Extend with plugin commands -plugin.load_plugins(config, ui, configs.get_plugins(config)) -for p in plugin.get_plugins().values(): - cmds.update(collections.OrderedDict([(p.name, p)])) -# - -parser = argparse.ArgumentParser(description="research papers repository") -subparsers = parser.add_subparsers(title="valid commands", dest="command") - -for cmd_mod in cmds.values(): - subparser = cmd_mod.parser(subparsers, config) # why do we return the subparser ? - -args = parser.parse_args() -args.config = config -args.ui = ui -cmd = args.command -del args.command - -cmds[cmd].command(**vars(args)) +import papers_cmd +papers_cmd.execute() \ No newline at end of file diff --git a/papers/papers_cmd.py b/papers/papers_cmd.py new file mode 100644 index 0000000..210b3cc --- /dev/null +++ b/papers/papers_cmd.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python2 +# -*- coding:utf-8 -*- +import sys + +import argparse +import collections + +from .ui import UI +from . import configs +from . import commands +from . import plugin + +cmds = collections.OrderedDict([ + ('init', commands.init_cmd), + ('add', commands.add_cmd), + ('add_library', commands.add_library_cmd), + ('import', commands.import_cmd), + ('export', commands.export_cmd), + ('list', commands.list_cmd), + ('edit', commands.edit_cmd), + ('remove', commands.remove_cmd), + ('open', commands.open_cmd), + ('websearch', commands.websearch_cmd), + ('tag', commands.tag_cmd), + ('attach', commands.attach_cmd), + ('update', commands.update_cmd), + ]) + +config = configs.read_config() +ui = UI(config) + +# Extend with plugin commands +plugin.load_plugins(config, ui, configs.get_plugins(config)) +for p in plugin.get_plugins().values(): + cmds.update(collections.OrderedDict([(p.name, p)])) +# + +parser = argparse.ArgumentParser(description="research papers repository") +subparsers = parser.add_subparsers(title="valid commands", dest="command") + +for cmd_mod in cmds.values(): + subparser = cmd_mod.parser(subparsers, config) # why do we return the subparser ? + +def execute(raw_args = sys.argv): + args = parser.parse_args(raw_args[1:]) + args.config = config + args.ui = ui + cmd = args.command + del args.command + + cmds[cmd].command(**vars(args)) diff --git a/tests/test_usecase.py b/tests/test_usecase.py new file mode 100644 index 0000000..e62fc46 --- /dev/null +++ b/tests/test_usecase.py @@ -0,0 +1,36 @@ +import sys, os +import unittest +import pkgutil + +import testenv +import fake_filesystem + +import papers +from papers import papers_cmd + +def create_fake_fs(): + fake_fs = fake_filesystem.FakeFilesystem() + fake_os = fake_filesystem.FakeOsModule(fake_fs) + fake_open = fake_filesystem.FakeFileOpen(fake_fs) + fake_fs.CreateFile('/Users/fabien/bla') + __builtins__['open'] = fake_open + __builtins__['file'] = fake_open + + for importer, modname, ispkg in pkgutil.walk_packages(path=papers.__path__, + prefix=papers.__name__+'.', + onerror=lambda x: None): + md = __import__(modname, fromlist = 'dummy') + md.os = fake_os + + +class TestUseCases(unittest.TestCase): + + def test_init(self): + create_fake_fs() + papers_md.execute_papers('papers init -p paper_test2'.split()) + + def test_init(self): + create_fake_fs() + papers_cmd.execute('papers init -p paper_test2'.split()) + + From b4504278f2e0a65ed1580ce822a8852d1f1990c8 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 09:30:56 +0100 Subject: [PATCH 03/14] more robust fake_fs testing; added papers add test --- papers/papers | 2 +- papers/papers_cmd.py | 25 ++++++++-------- tests/test_usecase.py | 68 ++++++++++++++++++++++++++++++++++--------- 3 files changed, 69 insertions(+), 26 deletions(-) diff --git a/papers/papers b/papers/papers index eeed970..1cc68db 100755 --- a/papers/papers +++ b/papers/papers @@ -1,5 +1,5 @@ #!/usr/bin/env python2 # -*- coding:utf-8 -*- -import papers_cmd +from papers import papers_cmd papers_cmd.execute() \ No newline at end of file diff --git a/papers/papers_cmd.py b/papers/papers_cmd.py index 210b3cc..eb59bff 100644 --- a/papers/papers_cmd.py +++ b/papers/papers_cmd.py @@ -26,24 +26,25 @@ cmds = collections.OrderedDict([ ('update', commands.update_cmd), ]) -config = configs.read_config() -ui = UI(config) -# Extend with plugin commands -plugin.load_plugins(config, ui, configs.get_plugins(config)) -for p in plugin.get_plugins().values(): - cmds.update(collections.OrderedDict([(p.name, p)])) -# +def execute(raw_args = sys.argv): + config = configs.read_config() + ui = UI(config) -parser = argparse.ArgumentParser(description="research papers repository") -subparsers = parser.add_subparsers(title="valid commands", dest="command") + # Extend with plugin commands + plugin.load_plugins(config, ui, configs.get_plugins(config)) + for p in plugin.get_plugins().values(): + cmds.update(collections.OrderedDict([(p.name, p)])) -for cmd_mod in cmds.values(): - subparser = cmd_mod.parser(subparsers, config) # why do we return the subparser ? + parser = argparse.ArgumentParser(description="research papers repository") + subparsers = parser.add_subparsers(title="valid commands", dest="command") + + for cmd_mod in cmds.values(): + subparser = cmd_mod.parser(subparsers, config) # why do we return the subparser ? -def execute(raw_args = sys.argv): args = parser.parse_args(raw_args[1:]) args.config = config + args.ui = ui cmd = args.command del args.command diff --git a/tests/test_usecase.py b/tests/test_usecase.py index e62fc46..56b6740 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -4,33 +4,75 @@ import pkgutil import testenv import fake_filesystem +import fake_filesystem_shutil -import papers -from papers import papers_cmd +real_os = os +real_open = open + +fake_os, fake_open, fake_shutil = None, None + +def _create_fake_fs(): + global fake_os, fake_open, fake_shutil -def create_fake_fs(): fake_fs = fake_filesystem.FakeFilesystem() fake_os = fake_filesystem.FakeOsModule(fake_fs) fake_open = fake_filesystem.FakeFileOpen(fake_fs) - fake_fs.CreateFile('/Users/fabien/bla') + fake_shutil = fake_filesystem_shutil.FakeShutilModule(fake_fs) + + fake_fs.CreateDirectory(fake_os.path.expanduser('~')) __builtins__['open'] = fake_open __builtins__['file'] = fake_open - for importer, modname, ispkg in pkgutil.walk_packages(path=papers.__path__, - prefix=papers.__name__+'.', - onerror=lambda x: None): + sys.modules['os'] = fake_os + sys.modules['shutil'] = fake_shutil + + import papers + for importer, modname, ispkg in pkgutil.walk_packages( + path=papers.__path__, + prefix=papers.__name__+'.', + onerror=lambda x: None): md = __import__(modname, fromlist = 'dummy') md.os = fake_os + md.shutil = fake_shutil + return fake_fs -class TestUseCases(unittest.TestCase): +class TestInit(unittest.TestCase): def test_init(self): - create_fake_fs() - papers_md.execute_papers('papers init -p paper_test2'.split()) - - def test_init(self): - create_fake_fs() + fs = _create_fake_fs() + from papers import papers_cmd papers_cmd.execute('papers init -p paper_test2'.split()) + self.assertEqual(set(fake_os.listdir('/paper_test2/')), {'bibdata', 'doc', 'meta', 'papers.yaml'}) + +class TestAdd(unittest.TestCase): + + def test_add(self): + + fs = _create_fake_fs() + from papers import papers_cmd + papers_cmd.execute('papers init'.split()) + + with real_open('data/pagerank.bib', 'r') as f: + fs.CreateFile('/data/page.bib', contents = f.read()) + with real_open('data/pagerank.pdf', 'r') as f: + fs.CreateFile('/data/page.pdf', contents = f.read()) + + papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split()) + + +class TestAdd2(unittest.TestCase): + def test_add2(self): + + fs = _create_fake_fs() + from papers import papers_cmd + papers_cmd.execute('papers init -p /not_default'.split()) + + with real_open('data/pagerank.bib', 'r') as f: + fs.CreateFile('/data/page.bib', contents = f.read()) + with real_open('data/pagerank.pdf', 'r') as f: + fs.CreateFile('/data/page.pdf', contents = f.read()) + + papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split()) From 46e6630e7a91e4572da4f484ea582098462aca0a Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 09:55:28 +0100 Subject: [PATCH 04/14] corrected test name --- tests/test_tag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tag.py b/tests/test_tag.py index 9b12b65..299bdf9 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -4,7 +4,7 @@ import unittest import testenv from papers.commands.tag_cmd import _parse_tags, _tag_groups -class TestCreateCitekey(unittest.TestCase): +class TestTag(unittest.TestCase): def test_tag_parsing(self): From 293fc2393fdb48fc625c05788fb40025853cd137 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 10:04:38 +0100 Subject: [PATCH 05/14] automatic copy of content into fake fs --- tests/test_usecase.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/tests/test_usecase.py b/tests/test_usecase.py index 56b6740..02655ff 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -9,7 +9,7 @@ import fake_filesystem_shutil real_os = os real_open = open -fake_os, fake_open, fake_shutil = None, None +fake_os, fake_open, fake_shutil = None, None, None def _create_fake_fs(): global fake_os, fake_open, fake_shutil @@ -37,6 +37,17 @@ def _create_fake_fs(): return fake_fs +def _copy_data(fs): + """Copy all the data directory into the fake fs""" + for filename in real_os.listdir('data/'): + filepath = 'data/' + filename + if real_os.path.isfile(filepath): + with real_open(filepath, 'r') as f: + fs.CreateFile(filepath, contents = f.read()) + if real_os.path.isdir(filepath): + fs.CreateDirectory(filepath) + + class TestInit(unittest.TestCase): def test_init(self): @@ -45,34 +56,28 @@ class TestInit(unittest.TestCase): papers_cmd.execute('papers init -p paper_test2'.split()) self.assertEqual(set(fake_os.listdir('/paper_test2/')), {'bibdata', 'doc', 'meta', 'papers.yaml'}) + class TestAdd(unittest.TestCase): def test_add(self): fs = _create_fake_fs() + _copy_data(fs) + from papers import papers_cmd papers_cmd.execute('papers init'.split()) + papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split()) - with real_open('data/pagerank.bib', 'r') as f: - fs.CreateFile('/data/page.bib', contents = f.read()) - with real_open('data/pagerank.pdf', 'r') as f: - fs.CreateFile('/data/page.pdf', contents = f.read()) - - papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split()) - - -class TestAdd2(unittest.TestCase): def test_add2(self): fs = _create_fake_fs() + _copy_data(fs) + from papers import papers_cmd papers_cmd.execute('papers init -p /not_default'.split()) + papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split()) - with real_open('data/pagerank.bib', 'r') as f: - fs.CreateFile('/data/page.bib', contents = f.read()) - with real_open('data/pagerank.pdf', 'r') as f: - fs.CreateFile('/data/page.pdf', contents = f.read()) - papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split()) +#class TestAdd2(unittest.TestCase): From cb94166aef6f2ba99c9bf78203dc255891f7dda6 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 10:17:46 +0100 Subject: [PATCH 06/14] test.sh into virtual usecase --- tests/test.sh | 4 ++-- tests/test_usecase.py | 40 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/tests/test.sh b/tests/test.sh index 1fdbf8c..7bfba55 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash -rm -Rf paper_test/; +rm -Rf paper_test/*; papers init -p paper_test/; papers add -d data/pagerank.pdf -b data/pagerank.bib; papers list; papers tag; -papers tag Page99 network,search; +papers tag Page99 network+search; papers tag Page99; papers tag search; papers tag 0; diff --git a/tests/test_usecase.py b/tests/test_usecase.py index 02655ff..dee2258 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -6,6 +6,8 @@ import testenv import fake_filesystem import fake_filesystem_shutil +from papers import papers_cmd + real_os = os real_open = open @@ -47,12 +49,18 @@ def _copy_data(fs): if real_os.path.isdir(filepath): fs.CreateDirectory(filepath) +def _execute_cmds(cmds): + fs = _create_fake_fs() + _copy_data(fs) + + for cmd in cmds: + papers_cmd.execute(cmd.split()) + class TestInit(unittest.TestCase): def test_init(self): fs = _create_fake_fs() - from papers import papers_cmd papers_cmd.execute('papers init -p paper_test2'.split()) self.assertEqual(set(fake_os.listdir('/paper_test2/')), {'bibdata', 'doc', 'meta', 'papers.yaml'}) @@ -64,7 +72,6 @@ class TestAdd(unittest.TestCase): fs = _create_fake_fs() _copy_data(fs) - from papers import papers_cmd papers_cmd.execute('papers init'.split()) papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split()) @@ -73,11 +80,36 @@ class TestAdd(unittest.TestCase): fs = _create_fake_fs() _copy_data(fs) - from papers import papers_cmd papers_cmd.execute('papers init -p /not_default'.split()) papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split()) + self.assertEqual(set(fake_os.listdir('/not_default/doc')), {'Page99.pdf'}) + + +class TestList(unittest.TestCase): + + def test_list(self): + + fs = _create_fake_fs() + _copy_data(fs) + + papers_cmd.execute('papers init -p /not_default2'.split()) + papers_cmd.execute('papers list'.split()) + papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split()) + papers_cmd.execute('papers list'.split()) + +class TestUsecase(unittest.TestCase): -#class TestAdd2(unittest.TestCase): + def test_first(self): + cmds = ['papers init -p paper_test/', + 'papers add -d data/pagerank.pdf -b data/pagerank.bib', + 'papers list', + 'papers tag', + 'papers tag Page99 network+search', + 'papers tag Page99', + 'papers tag search', + 'papers tag 0', + ] + _execute_cmds(cmds) From 20116cf69dd0fddb60b2cb9e9e325a0d39d5d75f Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 22:41:33 +0100 Subject: [PATCH 07/14] color.undye method for purging color from strings --- papers/color.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/papers/color.py b/papers/color.py index 794d028..ada8dec 100644 --- a/papers/color.py +++ b/papers/color.py @@ -1,7 +1,7 @@ """ Small code to handle colored text """ - +import re bold = '\033[1m' end = '\033[0m' @@ -37,3 +37,10 @@ def setup(enable = True): dye = _dye else: dye = _nodye + + +undye_re = re.compile('\x1b\[[;\d]*[A-Za-z]') + +def undye(s): + """Purge string s of color""" + return undye_re.sub('', s) \ No newline at end of file From 37cd8209d70d84748989366986b437f1d9b9ea1a Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 22:42:04 +0100 Subject: [PATCH 08/14] compatibility module for python2/3 code --- papers/p3.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 papers/p3.py diff --git a/papers/p3.py b/papers/p3.py new file mode 100644 index 0000000..d4b8702 --- /dev/null +++ b/papers/p3.py @@ -0,0 +1,9 @@ +import sys + +if sys.version_info[0] == 2: + import ConfigParser as configparser + import StringIO as io + input = raw_input +else: + import configparser + import io From ddfc129b644b9ef6c288597ccbfacdf9c49e1fc9 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sat, 29 Jun 2013 22:42:31 +0100 Subject: [PATCH 09/14] redirect and check stdout in usecases --- tests/test_usecase.py | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/tests/test_usecase.py b/tests/test_usecase.py index dee2258..a068def 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -7,6 +7,8 @@ import fake_filesystem import fake_filesystem_shutil from papers import papers_cmd +from papers import color +from papers.p3 import io real_os = os real_open = open @@ -49,12 +51,30 @@ def _copy_data(fs): if real_os.path.isdir(filepath): fs.CreateDirectory(filepath) -def _execute_cmds(cmds): - fs = _create_fake_fs() - _copy_data(fs) +def redirect(f): + def newf(*args, **kwargs): + old_stderr, old_stdout = sys.stderr, sys.stdout + stdout = io.StringIO() + stderr = io.StringIO() + sys.stdout, sys.stderr = stdout, stderr + try: + return f(*args, **kwargs), stdout, stderr + finally: + sys.stderr, sys.stdout = old_stderr, old_stdout + return newf + +#@redirect +def _execute_cmds(cmds, fs = None): + if fs is None: + fs = _create_fake_fs() + _copy_data(fs) + outs = [] for cmd in cmds: - papers_cmd.execute(cmd.split()) + _, stdout, stderr = redirect(papers_cmd.execute)(cmd.split()) + outs.append(color.undye(stdout.getvalue())) + + return outs class TestInit(unittest.TestCase): @@ -102,6 +122,15 @@ class TestUsecase(unittest.TestCase): def test_first(self): + correct = ['Initializing papers in /paper_test/.\n', + 'Added: Page99\n', + '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) \n', + '', + '', + 'search network\n', + '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) search network\n', + 'search network\n'] + cmds = ['papers init -p paper_test/', 'papers add -d data/pagerank.pdf -b data/pagerank.bib', 'papers list', @@ -112,4 +141,4 @@ class TestUsecase(unittest.TestCase): 'papers tag 0', ] - _execute_cmds(cmds) + self.assertEqual(correct, _execute_cmds(cmds)) From 6ba9b3e14a9b4fd6713e7fb63523d18559842553 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sun, 30 Jun 2013 09:28:56 +0100 Subject: [PATCH 10/14] added .DS_Store to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d3ba2f5..0dfdfda 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ build/ dist/ *~ *.pyc -tests/.papers +tests/paper_test papers.egg-info +.DS_Store From 76e162be02580bd27ecdf0350467b63dd5e721ea Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sun, 30 Jun 2013 18:14:24 +0100 Subject: [PATCH 11/14] added test bibfiles for usecases --- tests/data/10.1371%2Fjournal.pone.0038236.bib | 19 ++++++++++++++++++ tests/data/martius.bib | 19 ++++++++++++++++++ tests/data/turing-mind-1950.pdf | Bin 0 -> 143589 bytes tests/data/turing1950.bib | 10 +++++++++ 4 files changed, 48 insertions(+) create mode 100644 tests/data/10.1371%2Fjournal.pone.0038236.bib create mode 100644 tests/data/martius.bib create mode 100644 tests/data/turing-mind-1950.pdf create mode 100644 tests/data/turing1950.bib diff --git a/tests/data/10.1371%2Fjournal.pone.0038236.bib b/tests/data/10.1371%2Fjournal.pone.0038236.bib new file mode 100644 index 0000000..f8c64d4 --- /dev/null +++ b/tests/data/10.1371%2Fjournal.pone.0038236.bib @@ -0,0 +1,19 @@ + +@article{10.1371_journal.pone.0038236, + author = {Caroline Lyon AND Chrystopher L. Nehaniv AND Joe Saunders}, + journal = {PLoS ONE}, + publisher = {Public Library of Science}, + title = {Interactive Language Learning by Robots: The Transition from Babbling to Word Forms}, + year = {2012}, + month = {06}, + volume = {7}, + url = {http://dx.doi.org/10.1371%2Fjournal.pone.0038236}, + pages = {e38236}, + abstract = {

The advent of humanoid robots has enabled a new approach to investigating the acquisition of language, and we report on the development of robots able to acquire rudimentary linguistic skills. Our work focuses on early stages analogous to some characteristics of a human child of about 6 to 14 months, the transition from babbling to first word forms. We investigate one mechanism among many that may contribute to this process, a key factor being the sensitivity of learners to the statistical distribution of linguistic elements. As well as being necessary for learning word meanings, the acquisition of anchor word forms facilitates the segmentation of an acoustic stream through other mechanisms. In our experiments some salient one-syllable word forms are learnt by a humanoid robot in real-time interactions with naive participants. Words emerge from random syllabic babble through a learning process based on a dialogue between the robot and the human participant, whose speech is perceived by the robot as a stream of phonemes. Numerous ways of representing the speech as syllabic segments are possible. Furthermore, the pronunciation of many words in spontaneous speech is variable. However, in line with research elsewhere, we observe that salient content words are more likely than function words to have consistent canonical representations; thus their relative frequency increases, as does their influence on the learner. Variable pronunciation may contribute to early word form acquisition. The importance of contingent interaction in real-time between teacher and learner is reflected by a reinforcement process, with variable success. The examination of individual cases may be more informative than group results. Nevertheless, word forms are usually produced by the robot after a few minutes of dialogue, employing a simple, real-time, frequency dependent mechanism. This work shows the potential of human-robot interaction systems in studies of the dynamics of early language acquisition.

}, + number = {6}, + doi = {10.1371/journal.pone.0038236} +} + + + + diff --git a/tests/data/martius.bib b/tests/data/martius.bib new file mode 100644 index 0000000..63f62c9 --- /dev/null +++ b/tests/data/martius.bib @@ -0,0 +1,19 @@ + +@article{10.1371_journal.pone.0063400, + author = {Georg Martius AND Ralf Der AND Nihat Ay}, + journal = {PLoS ONE}, + publisher = {Public Library of Science}, + title = {Information Driven Self-Organization of Complex Robotic Behaviors}, + year = {2013}, + month = {05}, + volume = {8}, + url = {http://dx.doi.org/10.1371%2Fjournal.pone.0063400}, + pages = {e63400}, + abstract = {

Information theory is a powerful tool to express principles to drive autonomous systems because it is domain invariant and allows for an intuitive interpretation. This paper studies the use of the predictive information (PI), also called excess entropy or effective measure complexity, of the sensorimotor process as a driving force to generate behavior. We study nonlinear and nonstationary systems and introduce the time-local predicting information (TiPI) which allows us to derive exact results together with explicit update rules for the parameters of the controller in the dynamical systems framework. In this way the information principle, formulated at the level of behavior, is translated to the dynamics of the synapses. We underpin our results with a number of case studies with high-dimensional robotic systems. We show the spontaneous cooperativity in a complex physical system with decentralized control. Moreover, a jointly controlled humanoid robot develops a high behavioral variety depending on its physics and the environment it is dynamically embedded into. The behavior can be decomposed into a succession of low-dimensional modes that increasingly explore the behavior space. This is a promising way to avoid the curse of dimensionality which hinders learning systems to scale well.

}, + number = {5}, + doi = {10.1371/journal.pone.0063400} +} + + + + diff --git a/tests/data/turing-mind-1950.pdf b/tests/data/turing-mind-1950.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f1ba38620f70dceb32afb9875dff8700d853d40 GIT binary patch literal 143589 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�EMEp5=feaUyz9Sg;hn{nG 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 literal 0 HcmV?d00001 diff --git a/tests/data/turing1950.bib b/tests/data/turing1950.bib new file mode 100644 index 0000000..2f53fa5 --- /dev/null +++ b/tests/data/turing1950.bib @@ -0,0 +1,10 @@ +@article{turing1950computing, + title={Computing machinery and intelligence}, + author={Turing, Alan M}, + journal={Mind}, + volume={59}, + number={236}, + pages={433--460}, + year={1950}, + publisher={JSTOR} +} From 6d8b0aba212e6dc878030817427212a7b6a1cacd Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sun, 30 Jun 2013 18:14:56 +0100 Subject: [PATCH 12/14] added force option to remove command --- papers/commands/remove_cmd.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/papers/commands/remove_cmd.py b/papers/commands/remove_cmd.py index e1dfea4..00147f6 100644 --- a/papers/commands/remove_cmd.py +++ b/papers/commands/remove_cmd.py @@ -8,18 +8,21 @@ from ..events import RemoveEvent def parser(subparsers, config): parser = subparsers.add_parser('remove', help='removes a paper') + parser.add_argument('-f', '--force', action='store_true', default=None, + help="does not prompt for confirmation.") add_references_argument(parser) return parser -def command(config, ui, references): +def command(config, ui, force, references): rp = repo.Repository.from_directory(config) citekeys = parse_references(ui, rp, references) - are_you_sure = ("Are you sure you want to delete paper(s) [%s]" - " (this will also delete associated documents)?" - % ', '.join([color.dye(c, color.citekey) for c in citekeys])) - sure = ui.input_yn(question=are_you_sure, default='n') - if sure: + if force is None: + are_you_sure = ("Are you sure you want to delete paper(s) [%s]" + " (this will also delete associated documents)?" + % ', '.join([color.dye(c, color.citekey) for c in citekeys])) + sure = ui.input_yn(question=are_you_sure, default='n') + if force or sure: for c in citekeys: rmevent = RemoveEvent(config, ui, c) rmevent.send() From 442ebe6caeaaee7e737d25bd331815ce94f6c663 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sun, 30 Jun 2013 18:16:33 +0100 Subject: [PATCH 13/14] more usecase test, remove is broken. --- tests/test_usecase.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tests/test_usecase.py b/tests/test_usecase.py index a068def..0c091df 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -122,7 +122,7 @@ class TestUsecase(unittest.TestCase): def test_first(self): - correct = ['Initializing papers in /paper_test/.\n', + correct = ['Initializing papers in /paper_first/.\n', 'Added: Page99\n', '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) \n', '', @@ -131,7 +131,7 @@ class TestUsecase(unittest.TestCase): '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) search network\n', 'search network\n'] - cmds = ['papers init -p paper_test/', + cmds = ['papers init -p paper_first/', 'papers add -d data/pagerank.pdf -b data/pagerank.bib', 'papers list', 'papers tag', @@ -142,3 +142,31 @@ class TestUsecase(unittest.TestCase): ] self.assertEqual(correct, _execute_cmds(cmds)) + + def test_second(self): + + cmds = ['papers init -p paper_second/', + 'papers add -b data/pagerank.bib', + 'papers add -d data/turing-mind-1950.pdf -b data/turing1950.bib', + 'papers add -b data/martius.bib', + 'papers add -b data/10.1371%2Fjournal.pone.0038236.bib', + 'papers list', + 'papers attach Page99 data/pagerank.pdf' + ] + + _execute_cmds(cmds) + + def test_third(self): + + cmds = ['papers init', + 'papers add -b data/pagerank.bib', + 'papers add -d data/turing-mind-1950.pdf -b data/turing1950.bib', + 'papers add -b data/martius.bib', + 'papers add -b data/10.1371%2Fjournal.pone.0038236.bib', + 'papers list', + 'papers attach Page99 data/pagerank.pdf', + 'papers remove -f Page99', + 'papers remove -f turing1950computing', + ] + + _execute_cmds(cmds) From 500667baaee61459e20d01637bfab603a5c66cc1 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Sun, 30 Jun 2013 18:16:33 +0100 Subject: [PATCH 14/14] more usecase test, hack-fixed plugins. --- papers/configs.py | 2 +- papers/plugs/texnote/texnote.py | 2 +- tests/test_usecase.py | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/papers/configs.py b/papers/configs.py index e137456..ae1ed2d 100644 --- a/papers/configs.py +++ b/papers/configs.py @@ -14,7 +14,7 @@ except KeyError: DEFAULT_IMPORT_COPY = 'yes' DEFAULT_IMPORT_MOVE = 'no' DEFAULT_COLOR = 'yes' -DEFAULT_PLUGINS = '' +DEFAULT_PLUGINS = 'texnote' CONFIG = ConfigParser.SafeConfigParser({ 'papers-directory': DEFAULT_PAPERS_DIRECTORY, diff --git a/papers/plugs/texnote/texnote.py b/papers/plugs/texnote/texnote.py index 2b6952b..d550156 100644 --- a/papers/plugs/texnote/texnote.py +++ b/papers/plugs/texnote/texnote.py @@ -38,7 +38,7 @@ class TexnotePlugin(PapersPlugin): def toto(self): print "toto" - @RemoveEvent.listen() + #@RemoveEvent.listen() def testEvent(self, rmevent): print "testEvent" diff --git a/tests/test_usecase.py b/tests/test_usecase.py index a068def..0c091df 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -122,7 +122,7 @@ class TestUsecase(unittest.TestCase): def test_first(self): - correct = ['Initializing papers in /paper_test/.\n', + correct = ['Initializing papers in /paper_first/.\n', 'Added: Page99\n', '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) \n', '', @@ -131,7 +131,7 @@ class TestUsecase(unittest.TestCase): '0: [Page99] L. Page et al. "The PageRank Citation Ranking Bringing Order to the Web" (1999) search network\n', 'search network\n'] - cmds = ['papers init -p paper_test/', + cmds = ['papers init -p paper_first/', 'papers add -d data/pagerank.pdf -b data/pagerank.bib', 'papers list', 'papers tag', @@ -142,3 +142,31 @@ class TestUsecase(unittest.TestCase): ] self.assertEqual(correct, _execute_cmds(cmds)) + + def test_second(self): + + cmds = ['papers init -p paper_second/', + 'papers add -b data/pagerank.bib', + 'papers add -d data/turing-mind-1950.pdf -b data/turing1950.bib', + 'papers add -b data/martius.bib', + 'papers add -b data/10.1371%2Fjournal.pone.0038236.bib', + 'papers list', + 'papers attach Page99 data/pagerank.pdf' + ] + + _execute_cmds(cmds) + + def test_third(self): + + cmds = ['papers init', + 'papers add -b data/pagerank.bib', + 'papers add -d data/turing-mind-1950.pdf -b data/turing1950.bib', + 'papers add -b data/martius.bib', + 'papers add -b data/10.1371%2Fjournal.pone.0038236.bib', + 'papers list', + 'papers attach Page99 data/pagerank.pdf', + 'papers remove -f Page99', + 'papers remove -f turing1950computing', + ] + + _execute_cmds(cmds)