summaryrefslogtreecommitdiff
path: root/monkey/edits.py
AgeCommit message (Collapse)Author
2016-01-11For each edit remember the user ids where it was seenTimotej Lazar
2016-01-10Add each edit at most once per solutionTimotej Lazar
2016-01-10Avoid a potential division by zeroTimotej Lazar
2016-01-06Remove unused importsTimotej Lazar
2016-01-06Remove unused monkey.graph (replaced by nltk.Tree)Timotej Lazar
2016-01-05monkey.edits: cache test resultsTimotej Lazar
2016-01-05monkey.edits: only add solutions to predicates that are actually used when ↵Timotej Lazar
testing
2016-01-04Fix: use correct action types in monkey.editsTimotej Lazar
2015-12-23Prolog: pass aux. code to problem's test functionTimotej Lazar
This allows us to simplify individual problem test functions.
2015-12-22Fix off-by-one when extracting editsTimotej Lazar
2015-12-22Remove a stray "pass"Timotej Lazar
2015-12-11Rename a functionTimotej Lazar
2015-12-11Use a more general method for extracting editsTimotej Lazar
This is a large overhaul of monkey code. Before, only edits within individual lines were tracked, which required a Prolog-specific method for splitting a program into a list of lines for every rule. In this version, modifications can be tracked within arbitrary code ranges. Ranges to be tracked are determined by selecting "interesting" subtrees in the AST of the starting code version. The new method is simpler, less language-dependent and easier to extend. The downside is that a program must be syntactically correct before we can attempt to fix it (the previous approach could handle programs with syntax errors in some cases). This commit also integrates a call to monkey.fix in prolog_session.hint, by running it if no other hint is found.
2015-12-10Add copyright infoTimotej Lazar
2015-10-15Store identifiers instead of IDs in Problem modelTimotej Lazar
2015-09-24Remove trailing . from historical Prolog queriesTimotej Lazar
2015-08-20Convert monkey.edits to use the new DBTimotej Lazar
2015-08-11Add code to check for typosMehmet Akalın
2015-08-11Do not look for edits in problems with no tracesTimotej Lazar
2015-08-11Ignore attempts from all non-student usersTimotej Lazar
2015-08-11Ignore edits a→b where a or b has multiple partsTimotej Lazar
This happens for instance when a user writes more than one goal on the same line. A better way would be to handle this when building a graph (use annotate instead of splitting on newlines).
2015-08-11Exclude admin and test users when analyzing tracesTimotej Lazar
2015-08-11Don't store solution-line frequenciesTimotej Lazar
This is currently unused.
2015-08-11Simplify monkey.edits.get_edits_from_tracesTimotej Lazar
2015-08-11Rename monkey.edits.edit_graph to trace_graphTimotej Lazar
2015-08-11CleanupsTimotej Lazar
2015-08-11Fix recording replacements (remove/insert)Timotej Lazar
2015-08-11Move normalize to prolog.utilTimotej Lazar
2015-08-11Ignore edits after the first correct versionTimotej Lazar
2015-08-11Clean up monkey.fix.stepTimotej Lazar
2015-08-11Simplify get_edits_from_tracesTimotej Lazar
2015-08-11Remove all trailing punctuation from linesTimotej Lazar
Remove trailing sequences of COMMAs and PERIODs when extracting edits from a trace. This is because subgoal order is rarely important in Prolog, and we don't care if the edit happened on the last line or not. This means that we treat for example "conc(A,B)," → "conc(A,B,C)." the same as "conc(A,B)" → "conc(A,B,C)".
2015-08-11Small cleanupsTimotej Lazar
2015-08-11Clean up monkey.edits.get_pathsTimotej Lazar
2015-08-11Move monkey.prolog to root moduleTimotej Lazar
2015-08-11Clean up monkey.prolog.utilTimotej Lazar
2015-08-11Pickle frequent edits when calling monkey.editsTimotej Lazar
Resulting file contains a 4-tuple with edit, line, submission and query frequencies. Each element of the tuple is a dictionary of the form <pid>: dictionary of frequencies The data in this file will be loaded by the tutor app and used for generating hints.
2015-08-11Use relative imports in monkey modulesTimotej Lazar
2015-08-11Move pymonkey stuff to monkey/Timotej Lazar
Importing pymonkey into webmonkey, let's see how this works.