[Subversion] / PEAK-Rules / Indexing.txt  

Log of /PEAK-Rules/Indexing.txt

Parent Directory

No default branch
Bookmark a link to HEAD: (view) (download)


Revision 2762 - (view) (download) - [select for diffs]
Modified Thu Apr 9 16:02:39 2015 UTC (8 years, 11 months ago) by pje
File length: 50657 byte(s)
Diff to previous 2748
Unify exception reprs across 2.x and 3.x so tests work

Revision 2748 - (view) (download) - [select for diffs]
Modified Sat Apr 4 17:18:28 2015 UTC (8 years, 11 months ago) by pje
File length: 50646 byte(s)
Diff to previous 2746
Python 3 syntax and type compatibility for more tests

Revision 2746 - (view) (download) - [select for diffs]
Modified Sat Apr 4 06:09:40 2015 UTC (8 years, 11 months ago) by pje
File length: 50512 byte(s)
Diff to previous 2710
Clean up prints for Python 3

Revision 2710 - (view) (download) - [select for diffs]
Modified Wed Oct 17 19:28:44 2012 UTC (11 years, 5 months ago) by pje
File length: 50426 byte(s)
Diff to previous 2680
Remove test dependency on CPython set iteration order

Revision 2680 - (view) (download) - [select for diffs]
Modified Wed Aug 18 05:16:43 2010 UTC (13 years, 7 months ago) by pje
File length: 50355 byte(s)
Diff to previous 2679
Drop superfluous Conjunction subclasses in favor of just using 
Conjunction in the first place.  Classes and NotObjects were a holdover 
from when I thought the right side of a Test would determine what kind 
of operation would be performed and how it would be indexed.

Revision 2679 - (view) (download) - [select for diffs]
Modified Wed Aug 18 05:05:36 2010 UTC (13 years, 7 months ago) by pje
File length: 50323 byte(s)
Diff to previous 2678
Fix broken indexing for "is not" conditions (especially "and"-ed ones)

Revision 2678 - (view) (download) - [select for diffs]
Modified Wed Aug 18 03:10:22 2010 UTC (13 years, 7 months ago) by pje
File length: 49678 byte(s)
Diff to previous 2649
Simplified class indexing strategy so that ABCs and other 2.6+ classes 
using __subclasscheck__/__subclasshook__ should work correctly without
any special treatment.  (The tradeoff is worse worst-case performance
when not-yet-indexed classes are added to rules or seen during
dispatching.)

Revision 2649 - (view) (download) - [select for diffs]
Modified Tue Aug 10 22:44:26 2010 UTC (13 years, 7 months ago) by pje
File length: 50135 byte(s)
Diff to previous 2638
Wiki cleanups

Revision 2638 - (view) (download) - [select for diffs]
Modified Mon Aug 2 20:42:18 2010 UTC (13 years, 7 months ago) by pje
File length: 50092 byte(s)
Diff to previous 2566
Kill off remaining spurious doctest differences between platforms/versions (I hope!)

Revision 2566 - (view) (download) - [select for diffs]
Modified Tue Jul 15 16:49:02 2008 UTC (15 years, 8 months ago) by pje
File length: 49367 byte(s)
Diff to previous 2558
Refactor condition negation by adding negate() GF, dropping
truth mode from builders, and adding an OrElse sequential-or
operator.  This also changed how Truth tests are coded, to use
Value(True, T/F) objects in place of bools (to get rid of the
ambiguity that previously existed).  Value(x, False) objects
no longer have disjuncts, since that was another ambiguity.
These ambiguities meant that you couldn't cleanly take the
disjuncts() of a Test(), which meant you also couldn't negate
a test safely.  We also no longer force Signature() objects
to expand Test disjunctions, as this isn't necessary for
DNF handling.  (Because we're going to grab the disjuncts()
at rule-add time anyway -- eager expansion was an unnecessary
holdover from the way RuleDispatch did things.)  See also:

 http://www.eby-sarna.com/pipermail/peak/2008-July/003000.html

for more background on the reasoning behind these changes.

Revision 2558 - (view) (download) - [select for diffs]
Modified Wed Jun 25 14:55:52 2008 UTC (15 years, 9 months ago) by pje
File length: 49347 byte(s)
Diff to previous 2551
Add more test coverage for "not" type criteria

Revision 2551 - (view) (download) - [select for diffs]
Modified Thu Jun 12 02:05:33 2008 UTC (15 years, 9 months ago) by pje
File length: 48861 byte(s)
Diff to previous 2550
Add some tests of mixed istype/class indexing.  (Also,
a slight refactoring of TypeIndex.add_class.)

Revision 2550 - (view) (download) - [select for diffs]
Modified Thu Jun 12 00:34:29 2008 UTC (15 years, 9 months ago) by pje
File length: 47346 byte(s)
Diff to previous 2549
Massive overhaul of the indexing system, to simplify custom
indexing and fully support istype() criteria in instance/subclass
nodes.

Revision 2549 - (view) (download) - [select for diffs]
Modified Wed Jun 11 17:39:28 2008 UTC (15 years, 9 months ago) by pje
File length: 44000 byte(s)
Diff to previous 2499
Fix outdated "aspect" terminology

Revision 2499 - (view) (download) - [select for diffs]
Modified Tue Feb 26 15:25:51 2008 UTC (16 years, 1 month ago) by pje
File length: 44000 byte(s)
Diff to previous 2493
Drop unnecessary attributes from BitmapIndex

Revision 2493 - (view) (download) - [select for diffs]
Modified Fri Jan 25 14:56:45 2008 UTC (16 years, 2 months ago) by pje
File length: 44076 byte(s)
Diff to previous 2481
Fix range indexes not handling > cases correctly if there
are no other conditions in the index for the same value.
(Reported by Alberto Valverde.)

Revision 2481 - (view) (download) - [select for diffs]
Modified Sun Jan 13 17:26:02 2008 UTC (16 years, 2 months ago) by pje
File length: 44016 byte(s)
Diff to previous 2458
Fix selectivity problems with Truth and ==
comparisons that were ending up with branches==1,
leading to incorrect dispatch trees.  (The number
of branches should never be 1 in a correct index.)

Revision 2458 - (view) (download) - [select for diffs]
Modified Sun Dec 30 20:14:46 2007 UTC (16 years, 3 months ago) by pje
File length: 44390 byte(s)
Diff to previous 2456
Separate memoization from builder state, drop build_root
method and go back to using Ordering(builder,expr) directly
for detecting ordering.  This lets us reuse the same builder
for different trees, as long as all the build state is kept
in the memo.

Revision 2456 - (view) (download) - [select for diffs]
Modified Sun Dec 30 15:32:41 2007 UTC (16 years, 3 months ago) by pje
File length: 44460 byte(s)
Diff to previous 2455
Index reseeding, classic MROs, enhanced "abstract", and 
smart engine recreation (w/unsubscribe).

Revision 2455 - (view) (download) - [select for diffs]
Modified Sat Dec 29 22:46:24 2007 UTC (16 years, 3 months ago) by pje
File length: 42342 byte(s)
Diff to previous 2313
Index refactoring: allow TreeBuilder subclasses to define how
expression-ordering is done, adjust ``BitmapIndex.seed_bits()``
and ``split_ranges`` to work better together and be a basis
for more complex dispatch node building.

Revision 2313 - (view) (download) - [select for diffs]
Modified Sun Jun 24 02:05:15 2007 UTC (16 years, 9 months ago) by pje
File length: 42214 byte(s)
Diff to previous 2312
PEAK-Rules is now as "smart" as RuleDispatch, in that it now
"knows" as much as RuleDispatch does about logical conditions
regarding Python objects, and how to index them efficiently.
The machinery is also better documented (and probably better
tested) than the equivalent bits of RuleDispatch.

Alas, this does not mean that you can actually use Python
expressions for generic function criteria yet, as the actual
tree builder/interpreter hasn't been written.  So we can
evaluate and index expressions, but not build them from an AST
or build/run a dispatch tree from the indexes.  Still, it's
getting *really* close now!

Revision 2312 - (view) (download) - [select for diffs]
Modified Thu Jun 21 13:52:46 2007 UTC (16 years, 9 months ago) by pje
File length: 38980 byte(s)
Diff to previous 2311
Move actual criterion types to peak.rules.criteria, which is also where
predicate/signature logic and criteria implication/intersection will
live.

Revision 2311 - (view) (download) - [select for diffs]
Modified Thu Jun 21 13:20:30 2007 UTC (16 years, 9 months ago) by pje
File length: 38940 byte(s)
Diff to previous 2310
Refactor ``seeds_for()`` to make its methods simpler to implement.

Revision 2310 - (view) (download) - [select for diffs]
Modified Thu Jun 21 03:16:13 2007 UTC (16 years, 9 months ago) by pje
File length: 38707 byte(s)
Diff to previous 2308
Implement indexing for is/not and </>/==/!= conditions, and general
bitmap-based index facility.  (Still needs class indexing to achieve
parity with the comparable parts of RuleDispatch, but it's getting
close.)

Revision 2308 - (view) (download) - [select for diffs]
Modified Tue Jun 12 04:51:21 2007 UTC (16 years, 9 months ago) by pje
File length: 26130 byte(s)
Diff to previous 2201
Added Aspects (ala PEP 3124) and refactor to use them in place of special
methods.  Refactor indexes to be aspects of an engine.  Improved handling
for the self-referential bootstrapping of the implies() generic function.

Revision 2201 - (view) (download) - [select for diffs]
Added Mon Jul 3 23:25:26 2006 UTC (17 years, 8 months ago) by pje
File length: 22215 byte(s)
Added a generic version of the Chambers & Chen algorithm, with tests.  
Unlike the RuleDispatch implementation, this one doesn't care how 
indexes or criteria or expressions actually work, and it has a much 
simpler way of dealing with inter-expression constraints.  The tree 
building algorithm can also be easily revised to produce any kind of 
dispatch tree, either eagerly or lazily, and whether in the form of 
bytecode, source code, or an actual object tree.  (RuleDispatch only 
supports lazy creation of an object tree; it can't do anything else.)

Of course, this core algorithm is useless without some concrete types to 
represent expressions, criteria, and indexes -- not to mention some 
actual tree-generating code to go along with it.  But this algorithm for
generating decision trees will be at the heart of the main rule engine 
for predicate dispatching.

At this point, about 2/3rds of the code in the ``dispatch.functions``
module of RuleDispatch has been mapped to ``peak.rules.core`` and 
``peak.rules.indexing``.  About 1/6th of ``dispatch.strategy`` has also
been translated.  ``dispatch.ast_builder`` will not require any code
changes, but it will probably get some new tests.  The remaining modules,
however, (including ``strategy``, ``combiners``, and  ``predicates``)
will be changed substantially.

The good news is that these changes should mostly be simplifications, 
since most of the ``predicates`` module will become calls to 
BytecodeAssembler APIs.  But the remaining parts of ``strategy`` and 
``functions`` will likely become more complex, because they will need 
to know how to generate decision-making bytecode, deal with rule 
removals, and a few other odds and ends.  Some additional code will also 
be needed to ensure that the core implementation is sufficiently 
extensible to allow new features (like predicate abstractions and 
classifiers) to be implemented.

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

  Diffs between and
  Type of Diff should be a

Sort log by:

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help