Mailing list archives: October 2007

Site index · List index
Message listThread · Author · Date
(None)++@trellis.perform+defview_it(self):+value=getattr(self.component,self.cell_name,None)+ifNonenotin(self.component,self.cell_name,value):+print"%schangedto:%s"%(self.cell_name,value)</ins></span></pre></div><aid="trunkChandlerPlatformchandlertime_servicespy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/chandler/time_services.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/chandler/time_services.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/chandler/time_services.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-32,16+32,21@@</span><spanclass="cx">tz=TimeZone.default</span><spanclass="cx">returndatetime.fromtimestamp(activity.Time._now,tz)</span><spanclass="cx"></span><ins>+deftimestamp(dt):+#timegmreturnsanintnumberofseconds,whichisprobablygood+#enoughforourpurposes,butmaketestsexpectafloat,in+#casewedecidetoreplaceitwithsomethingwithalittlemore+#resolution+returnfloat(timegm(dt.astimezone(TimeZone.utc).timetuple()))+</ins><spanclass="cx">defsetNow(dt):</span><spanclass="cx">ifdtisnotNoneanddt.tzinfoisNone:</span><spanclass="cx">dt=dt.replace(tzinfo=ICUtzinfo.default)</span><spanclass="cx"></span><del>-timetuple=dt.astimezone(TimeZone.utc).timetuple()-</del><spanclass="cx">#thisignorescalendar.timegm(ortime.mktime)rangelimitsand</span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx">mp;gt;<ins>+ auto_source=None </ins><span class="cx"> ) </span><span class="cx"> </span><ins>+ def __init__(self, item, **kwargs): + self._item = item + </ins><span class="cx"> @trellis.compute </span><ins>+ def auto(self): + if self.auto_source: + pass # make use of auto_source when reminders have been fleshed out + else: + positions = list(TRIAGE_HOOK.query(self._item)) + # default to NOW if nothing else applies + positions.append((0, NOW)) + max_weight, position = max(positions) + return position + + + @trellis.compute </ins><span class="cx"> def calculated(self): </span><span class="cx"> if self.manual is not None: </span><span class="cx"> return self.manual </span></span></pre></div> <a id="trunkChandlerAppsetuppy"></a> <div class="modfile"><h4>Modified: trunk/Chandler-App/setup.py (33 => 34)</h4> <pre class="diff"><span> <span class="info">--- trunk/Chandler-App/setup.py 2008-10-10 17:51:48 UTC (rev 33) +++ trunk/Chandler-App/setup.py 2008-10-10 22:24:21 UTC (rev 34) </span><span class="lines">@@ -11,5 +11,12 @@ </span><span class="cx"> install_requires=['Chandler-Platform'], </span><span class="cx"> test_suite = 'test_suite', </span><span class="cx"> packages = find_packages(), </span><del>- namespace_packages = ['chandler'] </del><ins>+ namespace_packages = ['chandá· Sat, 07 Apr, 02:32
Parlante e</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 09 Apr, 03:30
Parlante e</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 09 Apr, 03:30
Parlante e</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 09 Apr, 03:30
Parlante e</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 09 Apr, 03:30
Parlante e</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 09 Apr, 03:30
b...@code-bear.com se</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sat, 13 Sep, 09:29
b.@osafoundation.org False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 25 Apr, 03:33
drewjensen.in...@gmail.com =False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Sun, 27 Mar, 21:10
ia lt;/span><spanclass="cx">returndatetime.fromtimestamp(activity.Time._now,tz)</span><spanclass="cx"></span><ins>+deftimestamp(dt):+#timegmreturnsanintnumberofseconds,whichisprobablygood+#enoughforourpurposes,butmaketestsexpectafloat,in+#casewedecidetoreplaceitwithsomethingwithalittlemore+#resolution+returnfloat(timegm(dt.astimezone(TimeZone.utc).timetuple()))+</ins><spanclass="cx">defsetNow(dt):</span><spanclass="cx">ifdtisnotNoneanddt.tzinfoisNone:</span><spanclass="cx">dt=dt.replace(tzinfo=ICUtzinfo.default)</span><spanclass="cx"></span><del>-timetuple=dt.astimezone(TimeZone.utc).timetuple()-</del><spanclass="cx">#thisignorescalendar.timegm(ortime.mktime)rangelimitsand</span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre><s.compute</span><ins>+defauto( Mon, 26 May, 09:29
isse t;/span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx">mp;gt;<ins>+ auto_source=None </ins><span class="cx"> ) </span><span class="cx"> </span><ins>+ def __init__(self, item, **kwargs): + self._item = item + </ins><span class="cx"> @trellis.compute </span><ins>+ def auto(self): + if self.auto_source: + pass # make use of auto_source when reminders have been fleshed out + else: + positions = list(TRIAGE_HOOK.query(self._item)) + # default to NOW if nothing else applies + positions.append((0, NOW)) + max_weight, position = max(positions) + return position + + + @trellis.compute </ins><span class="cx"> def calculated(self): </span><span class="cx"> if self.manual is not None: </span><span class="cx"> return self.manual </span></span></pre></div> <a id="trunkChandlerAppsetuppy"></a> <div class="modfile"><h4>Modified: trunk/Chandler-App/setup.py (33 => 34)</h4> <pre class="diff"><span> <span class="info">--- trunk/Chandler-App/setup.py 2008-10-10 17:51:48 UTC (rev 33) +++ trunk/Chandler-App/setup.py 2008-10-10 22:24:21 UTC (rev 34) </span><span class="lines">@@ -11,5 +11,12 @@ </span><span class="cx"> install_requires=['Chandler-Platform'], </span><span class="cx"> test_suite = 'test_suite', </span><span class="cx"> packages = find_packages(), </span><del>- namespace_packages = ['chandler'] </del><ins>+ namespace_packages = ['chandá· Sun, 13 Nov, 20:15
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
ja...@wordzoo.com to_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Thu, 24 Apr, 14:24
m.@osafoundation.org> nkChandlerPlatformchandlertime_servicespy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/chandler/time_services.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/chandler/time_services.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/chandler/time_services.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-32,16+32,21@@</span><spanclass="cx">tz=TimeZone.default</span><spanclass="cx">returndatetime.fromtimestamp(activity.Time._now,tz)</span><spanclass="cx"></span><ins>+deftimestamp(dt):+#timegmreturnsanintnumberofseconds,whichisprobablygood+#enoughforourpurposes,butmaketestsexpectafloat,in+#casewedecidetoreplaceitwithsomethingwithalittlemore+#resolution+returnfloat(timegm(dt.astimezone(TimeZone.utc).timetuple()))+</ins><spanclass="cx">defsetNow(dt):</span><spanclass="cx">ifdtisnotNoneanddt.tzinfoisNone:</span><spanclass="cx">dt=dt.replace(tzinfo=ICUtzinfo.default)</span><spanclass="cx"></span><del>-timetuple=dt.astimezone(TimeZone.utc).timetuple()-</del><spanclass="cx">#thisignorescalendar.timegm(ortime.mktime)rangelimitsand</span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx">mp;gt;<ins>+ auto_source=None </ins><span class="cx"> ) </span><span class="cx"> </span><ins>+ def __init__(self, item, **kwargs): + self._item = item + </ins><span class="cx"> @trellis.compute </span><ins>+ def auto(self): + if self.auto_source: + pass # make use of auto_source when reminders have been fleshed out + else: + positions = list(TRIAGE_HOOK.query(self._item)) + # default to NOW if nothing else applies + positions.append((0, NOW)) + max_weight, position = max(positions) + return position + + + @trellis.compute </ins><span class="cx"> def calculated(self): </span><span class="cx"> if self.manual is not None: </span><span class="cx"> return self.manual </span></span></pre></div> <a id="trunkChandlerAppsetuppy"></a> <div class="modfile"><h4>Modified: trunk/Chandler-App/setup.py (33 => 34)</h4> <pre class="diff"><span> <span class="info">--- trunk/Chandler-App/setup.py 2008-10-10 17:51:48 UTC (rev 33) +++ trunk/Chandler-App/setup.py 2008-10-10 22:24:21 UTC (rev 34) </span><span class="lines">@@ -11,5 +11,12 @@ </span><span class="cx"> install_requires=['Chandler-Platform'], </span><span class="cx"> test_suite = 'test_suite', </span><span class="cx"> packages = find_packages(), </span><del>- namespace_packages = ['chandler'] </del><ins>+ namespace_packages = ['chandá· Mon, 03 May, 09:42
m.@osafoundation.org> nkChandlerPlatformchandlertime_servicespy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/chandler/time_services.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/chandler/time_services.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/chandler/time_services.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-32,16+32,21@@</span><spanclass="cx">tz=TimeZone.default</span><spanclass="cx">returndatetime.fromtimestamp(activity.Time._now,tz)</span><spanclass="cx"></span><ins>+deftimestamp(dt):+#timegmreturnsanintnumberofseconds,whichisprobablygood+#enoughforourpurposes,butmaketestsexpectafloat,in+#casewedecidetoreplaceitwithsomethingwithalittlemore+#resolution+returnfloat(timegm(dt.astimezone(TimeZone.utc).timetuple()))+</ins><spanclass="cx">defsetNow(dt):</span><spanclass="cx">ifdtisnotNoneanddt.tzinfoisNone:</span><spanclass="cx">dt=dt.replace(tzinfo=ICUtzinfo.default)</span><spanclass="cx"></span><del>-timetuple=dt.astimezone(TimeZone.utc).timetuple()-</del><spanclass="cx">#thisignorescalendar.timegm(ortime.mktime)rangelimitsand</span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx">mp;gt;<ins>+ auto_source=None </ins><span class="cx"> ) </span><span class="cx"> </span><ins>+ def __init__(self, item, **kwargs): + self._item = item + </ins><span class="cx"> @trellis.compute </span><ins>+ def auto(self): + if self.auto_source: + pass # make use of auto_source when reminders have been fleshed out + else: + positions = list(TRIAGE_HOOK.query(self._item)) + # default to NOW if nothing else applies + positions.append((0, NOW)) + max_weight, position = max(positions) + return position + + + @trellis.compute </ins><span class="cx"> def calculated(self): </span><span class="cx"> if self.manual is not None: </span><span class="cx"> return self.manual </span></span></pre></div> <a id="trunkChandlerAppsetuppy"></a> <div class="modfile"><h4>Modified: trunk/Chandler-App/setup.py (33 => 34)</h4> <pre class="diff"><span> <span class="info">--- trunk/Chandler-App/setup.py 2008-10-10 17:51:48 UTC (rev 33) +++ trunk/Chandler-App/setup.py 2008-10-10 22:24:21 UTC (rev 34) </span><span class="lines">@@ -11,5 +11,12 @@ </span><span class="cx"> install_requires=['Chandler-Platform'], </span><span class="cx"> test_suite = 'test_suite', </span><span class="cx"> packages = find_packages(), </span><del>- namespace_packages = ['chandler'] </del><ins>+ namespace_packages = ['chandá· Mon, 03 May, 09:42
m.@osafoundation.org> imedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx"></span><spanclass="cx">>>>nowTimestamp()</span><spanclass="cx">1222783200.0</span></span></pre></div><aid="trunkChandlerPlatformchandlercorepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/chandler/core.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/chandler/core.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/chandler/core.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-66,3+66,16@@</span><spanclass="cx">def__str__(self):</span><spanclass="cx">returnself.msg%{'cell_description':self.cell_description,</span><spanclass="cx">'cell_value':self.cell_value}</span><ins>+++####Utility#####++classViewer(trellis.Component):+component=trellis.attr(None)+cell_name=trellis.attr(None)++@trellis.perform+defview_it(self):+value=getattr(self.component,self.cell_name,None)+ifNonenotin(self.component,self.cell_name,value):+print"%schangedto:%s"%(self.cell_name,value)</ins></span></pre></div><aid="trunkChandlerPlatformchandlertime_servicespy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/chandler/time_services.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/chandler/time_services.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/chandler/time_services.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-32,16+32,21@@</span><spanclass="cx">tz=TimeZone.default</span><spanclass="cx">returndatetime.fromtimestamp(activity.Time._now,tz)</span><spanclass="cx"></span><ins>+deftimestamp(dt):+#timegmreturnsanintnumberofseconds,whichisprobablygood+#enoughforourpurposes,butmaketestsexpectafloat,in+#casewedecidetoreplaceitwithsomethingwithalittlemore+#resolution+returnfloat(timegm(dt.astimezone(TimeZone.utc).timetuple()))+</ins><spanclass="cx">defsetNow(dt):</span><spanclass="cx">ifdtisnotNoneanddt.tzinfoisNone:</span><spanclass="cx">dt=dt.replace(tzinfo=ICUtzinfo.default)</span><spanclass="cx"></span><del>-timetuple=dt.astimezone(TimeZone.utc).timetuple()-</del><spanclass="cx">#thisignorescalendar.timegm(ortime.mktime)rangelimitsand</span><spanclass="cx">#MAXYEAR/MINYEAR,sinceanowtimestampreallyshouldn'tbeoutsidethose</span><spanclass="cx">#ranges</span><del>-new_timestamp=timegm(timetuple)</del><ins>+new_timestamp=timestamp(dt)</ins><spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""Thenum200502250002.j1P02WnP008795@tutu.osafoundation.org> Mon, 03 May, 09:42
nen t;spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass="cx">==========</span><spanclass="cx"></span><del>-BelowareChandler'smostfrequentlyusedHooks.Seetheindex_fora-completelist.</del><ins>+BelowareChandler'smostfrequentlyusedHooks.See"hook"inthe+index_foracompletelist.</ins><spanclass="cx"></span><spanclass="cx">..</span><spanclass="cx">Whendocumentingahook,addaSphinxindexdirective,like</span><spanclass="lines"&gtt;>>item_triage.manual=99</ins><spanclass="cx">Traceback(mostrecentcalllast):</span><spanclass="cx">...</span><spanclass="cx">TriageRangeError:Can'tsettriagestatusto:99</span><spanclass="cx"></span><ins>+..index::hook;chandler.domain.triage+.._triage-hook:++Autotriage+===========++If:attr:`~Triage.manual`is``None``,:attr:`~Triage.auto`isusedto+determine:attr:`~Triage.calculated`.++The:attr:`~Triage.auto`celliscalculatedbytakingthehighest+weightedvaluefromapplyingthe:ref:`chandler.domain.triage+<triage-hook-central>`hook.Ifnovaluesarefound,:const:`NOW`+isused.++>>>item_triage.manual=None+>>>item_triage.calculated+100.0++</ins><spanclass="cx">XXXtesttriagestatusofunrecognized250,calculatedfallsbackto200</span><spanclass="cx"></span><spanclass="cx">XXXHowdoItest:</span><spanclass="cx">assumingnochandler.triage.typesentrypoints</span><spanclass="cx">addentrypointsincode</span><ins>+</ins></span></pre></div><aid="trunkChandlerAppchandlereventpy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/event.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/event.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/event.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,14+1,16@@</span><spanclass="cx">fromdatetimeimportdatetime,timedelta,time</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+importpeak.events.activityasactivity</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx"></span><spanclass="cx">fromchandler.coreimport*</span><del>-fromchandler.time_servicesimportTimeZone</del><ins>+fromchandler.time_servicesimportTimeZone,timestamp,nowTimestamp+fromchandler.triageimportTriage,NOW,LATER</ins><spanclass="cx"></span><del>-</del><spanclass="cx">one_hour=timedelta(hours=1)</span><spanclass="cx">zero_delta=timedelta(0)</span><spanclass="cx">midnight=time(0,tzinfo=TimeZone.floating)</span><ins>+EVENT_TRIAGE_WEIGHT=2.0</ins><spanclass="cx"></span><spanclass="cx">classEvent(Extension):</span><spanclass="cx">trellis.attrs(</span><spanclass="lines">@@-30,6+32,12@@</span><spanclass="cx">returndatetime.combine(self.base_start.date(),midnight)</span><spanclass="cx"></span><spanclass="cx">@trellis.compute</span><ins>+defis_started(self):+ifself.startisNone:+returnTrue+returnbool(activity.Time[timestamp(self.start)-nowTimestamp()])++@trellis.compute</ins><spanclass="cx">defduration(self):</span><spanclass="cx">ifnotself.is_day:</span><spanclass="cx">returnself.base_duration</span><spanclass="lines">@@-72,6+80,12@@</span><spanclass="cx">raiseBadDurationError(self.base_duration)</span><spanclass="cx"></span><spanclass="cx"></span><ins>+defevent_triage(item):+ifnotEvent.installed_on(item):+return(-1,None)+status=NOWifEvent(item).is_startedelseLATER+return(EVENT_TRIAGE_WEIGHT,status)+</ins><spanclass="cx">classNaiveTimezoneError(ConstraintError):</span><spanclass="cx">cell_description="base_start"</span><spanclass="cx"></span><spanclass="lines">@@-113,6+127,7@@</span><spanclass="cx">returnbool(self.eventandnotself.event.implied_transparency)</span><spanclass="cx"></span><spanclass="cx"></span><del>-#impliedtransparency</del><ins>+defevent_triage_position(item):+pass</ins><spanclass="cx"></span><spanclass="cx">#is_between</span></span></pre></div><aid="trunkChandlerAppchandlertriagepy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/chandler/triage.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/chandler/triage.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/chandler/triage.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-1,4+1,5@@</span><spanclass="cx">importpeak.events.trellisastrellis</span><ins>+frompeak.utilimportplugins</ins><spanclass="cx">frompeak.util.addonsimportAddOn</span><spanclass="cx">fromchandler.time_servicesimportnowTimestamp</span><spanclass="cx">fromchandler.coreimportConstraintError</span><spanclass="lines">@@-9,15+10,34@@</span><spanclass="cx">LATER=200.0</span><spanclass="cx">DONE=300.0</span><spanclass="cx"></span><ins>+TRIAGE_HOOK=plugins.Hook('chandler.domain.triage')+POSITION_HOOK=plugins.Hook('chandler.interaction.triage_position')+</ins><spanclass="cx">###Domainmodel###</span><spanclass="cx"></span><spanclass="cx">classTriage(AddOn,trellis.Component):</span><spanclass="cx">trellis.attrs(</span><ins>+_item=None,</ins><spanclass="cx">manual=None,</span><del>-auto=None</del><ins>+auto_source=None</ins><spanclass="cx">)</span><spanclass="cx"></span><ins>+def__init__(self,item,**kwargs):+self._item=item+</ins><spanclass="cx">@trellis.compute</span><ins>+defauto(self):+ifself.auto_source:+pass#makeuseofauto_sourcewhenremindershavebeenfleshedout+else:+positions=list(TRIAGE_HOOK.query(self._item))+#defaulttoNOWifnothingelseapplies+positions.append((0,NOW))+max_weight,position=max(positions)+returnposition+++@trellis.compute</ins><spanclass="cx">defcalculated(self):</span><spanclass="cx">ifself.manualisnotNone:</span><spanclass="cx">returnself.manual</span></span></pre></div><aid="trunkChandlerAppsetuppy"></a><divclass="modfile"><h4>Modified:trunk/Chandler-App/setup.py(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-App/setup.py2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-App/setup.py2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,5+11,12@@</span><spanclass="cx">install_requires=['Chandler-Platform'],</span><spanclass="cx">test_suite='test_suite',</span><spanclass="cx">packages=find_packages(),</span><del>-namespace_packages=['chandler']</del><ins>+namespace_packages=['chandler'],+entry_points="""+[chandler.domain.triage]+event=chandler.event:event_triage++[chandler.interaction.triage_position]+event=chandler.event:event_triage_position+"""</ins><spanclass="cx">),</span></span></pre></div><aid="trunkChandlerPlatformTimeServicestxt"></a><divclass="modfile"><h4>Modified:trunk/Chandler-Platform/TimeServices.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Chandler-Platform/TimeServices.txt2008-10-1017:51:48UTC(rev33)+++trunk/Chandler-Platform/TimeServices.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-137,8+137,17@@</span><spanclass="cx">>>>getNow()</span><spanclass="cx">datetime.datetime(2008,9,30,10,0,tzinfo=<ICUtzinfo:US/Eastern>)</span><spanclass="cx"></span><ins>+Timestamps+==========++TimestampsarefloatvaluesmeasuringsecondssincetheUTCepoch.+timemachineprovidesaconveniencefunctionforgettingtimestamps:++>>>timestamp(oct1)+1222880400.0+</ins><spanclass="cx">There'salsoatime_services-awarefunctionforgettingacurrent</span><del>-timestamp(secondssincetheUTCepoch).</del><ins>+timestamp.</ins><spanclass="cx">mp;gt;<ins>+ auto_source=None </ins><span class="cx"> ) </span><span class="cx"> </span><ins>+ def __init__(self, item, **kwargs): + self._item = item + </ins><span class="cx"> @trellis.compute </span><ins>+ def auto(self): + if self.auto_source: + pass # make use of auto_source when reminders have been fleshed out + else: + positions = list(TRIAGE_HOOK.query(self._item)) + # default to NOW if nothing else applies + positions.append((0, NOW)) + max_weight, position = max(positions) + return position + + + @trellis.compute </ins><span class="cx"> def calculated(self): </span><span class="cx"> if self.manual is not None: </span><span class="cx"> return self.manual </span></span></pre></div> <a id="trunkChandlerAppsetuppy"></a> <div class="modfile"><h4>Modified: trunk/Chandler-App/setup.py (33 => 34)</h4> <pre class="diff"><span> <span class="info">--- trunk/Chandler-App/setup.py 2008-10-10 17:51:48 UTC (rev 33) +++ trunk/Chandler-App/setup.py 2008-10-10 22:24:21 UTC (rev 34) </span><span class="lines">@@ -11,5 +11,12 @@ </span><span class="cx"> install_requires=['Chandler-Platform'], </span><span class="cx"> test_suite = 'test_suite', </span><span class="cx"> packages = find_packages(), </span><del>- namespace_packages = ['chandler'] </del><ins>+ namespace_packages = ['chandá· Wed, 11 Jan, 14:11
nen t;spanclass="cx"></span><spanclass="cx">activity.Time.auto_update=False</span><spanclass="cx">activity.Time.advance(new_timestamp-activity.Time._now)</span><spanclass="lines">@@-54,7+59,6@@</span><spanclass="cx">"""ThenumberofsecondsbetwentheUTCepochandnow."""</span><spanclass="cx">returnactivity.Time._now</span><spanclass="cx"></span><del>-</del><spanclass="cx">classTimeZone(trellis.Component,context.Service):</span><spanclass="cx"></span><spanclass="cx">default=trellis.attr(ICUtzinfo.default)</span></span></pre></div><aid="trunkHookstxt"></a><divclass="modfile"><h4>Modified:trunk/Hooks.txt(33=>34)</h4><preclass="diff"><span><spanclass="info">---trunk/Hooks.txt2008-10-1017:51:48UTC(rev33)+++trunk/Hooks.txt2008-10-1022:24:21UTC(rev34)</span><spanclass="lines">@@-11,8+11,8@@</span><spanclass="cx">Mainhooks</span><spanclass