[Subversion] / PEAK / TODO.txt  

Log of /PEAK/TODO.txt

Parent Directory

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


Revision 1957 - (view) (download) - [select for diffs]
Modified Sun Nov 28 19:42:38 2004 UTC (19 years, 4 months ago) by pje
File length: 3096 byte(s)
Diff to previous 1791 , to selected 1501
Get rid of a bunch of completed or cancelled to-do items.  This really
isn't an accurate reflection of the long-term direction of PEAK any more,
so it really needs more work.  But for now I might as well remove the
done's and the definite won't-do's.

Revision 1791 - (view) (download) - [select for diffs]
Modified Sun Jul 25 04:24:12 2004 UTC (19 years, 8 months ago) by pje
File length: 3812 byte(s)
Diff to previous 1700 , to selected 1501
Removed 'peak.running.timers' and 'peak.util.dispatch'.  Neither was in
active use, and both are being replaced by the new generic functions
package in PyProtocols.

Revision 1700 - (view) (download) - [select for diffs]
Modified Fri Feb 20 15:24:21 2004 UTC (20 years, 1 month ago) by pje
File length: 4052 byte(s)
Diff to previous 1694 , to selected 1501
Added 'ref:factory@addr' URL scheme that maps to a corresponding
'naming.Reference("factory",["addr"])'.  'factory' can be either a dotted
import string referencing a 'naming.IObjectFactory', or you can define
a factory in the 'peak.naming.factories' property space.

Added a 'zconfig.schema' factory, so that 'ref:zconfig.schema@streamURL'
will load a schema loader.  See CHANGES.txt for more details on all the
cool stuff you can do with this.

Revision 1694 - (view) (download) - [select for diffs]
Modified Sun Feb 15 16:30:35 2004 UTC (20 years, 1 month ago) by pje
File length: 4119 byte(s)
Diff to previous 1685 , to selected 1501
Fix 'version' tool breakage caused by promotion of running.tools; misc.
release prep.

Revision 1685 - (view) (download) - [select for diffs]
Modified Mon Feb 9 19:46:24 2004 UTC (20 years, 1 month ago) by pje
File length: 4254 byte(s)
Diff to previous 1667 , to selected 1501
Renamed old 'ddt.web' to 'ddt.view', and added new 'ddt.web' that publishes
a directory of test documents.  So, using::

    peak ddt.web src/peak/ddt/tests

would display a list of test documents in your browser, letting you click
on the documents to run the tests and display the results.

Revision 1667 - (view) (download) - [select for diffs]
Modified Mon Feb 2 00:18:21 2004 UTC (20 years, 2 months ago) by pje
File length: 4202 byte(s)
Diff to previous 1666 , to selected 1501
Added tests for Twisted, upgraded Deferred adapter to support 'IValue' and
other event interfaces.  It's a little quirky, but about as clean as I can
figure out how to make it.

Revision 1666 - (view) (download) - [select for diffs]
Modified Sun Feb 1 20:08:26 2004 UTC (20 years, 2 months ago) by pje
File length: 4266 byte(s)
Diff to previous 1659 , to selected 1501
Port process management tools to use 'peak.events' for everything (except
'IMainLoop' methods).

Revision 1659 - (view) (download) - [select for diffs]
Modified Fri Jan 30 00:28:02 2004 UTC (20 years, 2 months ago) by pje
File length: 4414 byte(s)
Diff to previous 1651 , to selected 1501
Added '[Named Services]' section parser to 'peak.ini'.  This new section
type functions almost identically to '[Component Factories]', except that
the keys are property names rather than references to interfaces or other
component keys.  This should be helpful for configuring shared services
that all implement the same interface, such as SQL connection objects.

Note that to look up a named service, you simply use the appropriate
property name, as usual.  The difference is that you are guaranteed to
always use the same *instance* of the service, within a given service
area.

Also, added 'ddt.SQLChecker()', which verifies SQL results against a
test document.  'SQLChecker' makes use of the new "Named Services" feature
in order to ensure it's accessing the database you intend to test (as
opposed to say, the nearest SQL connection object).

Revision 1651 - (view) (download) - [select for diffs]
Modified Wed Jan 28 04:10:52 2004 UTC (20 years, 2 months ago) by pje
File length: 4463 byte(s)
Diff to previous 1649 , to selected 1501
Added rough draft of 'RowProcessor'.  Expanded 'ICellMapper' interface to
cover new needs, and refactored mapper implementations to inherit from a
common base for most of their methods.  Added 'Score.__nonzero__' method,
so that you can use 'if cell.score:' to tell whether a cell has already
been marked.

Revision 1649 - (view) (download) - [select for diffs]
Modified Tue Jan 27 22:48:29 2004 UTC (20 years, 2 months ago) by pje
File length: 4492 byte(s)
Diff to previous 1640 , to selected 1501
Major upgrades to DDT package:

* Added 'ICellMapper' interface to allow introspective actions on objects,
  with adapters predefined for methods, properties, and 'model.IFeature'
  objects.

* Added 'MethodProcessor' and 'ModelProcessor' (test), and
  'ActionProcessor' (not yet tested)

* Lots and lots of docstrings added

* The 'HTMLDocument' DM now always strips leading/trailing whitespace from
  cell text.

* New functions 'ddt.titleAsMethodName()' and 'ddt.titleAsPropertyName()'
  for standardized parsing of certain types of cell data.

* Updated demo classes to use both 'MethodProcessor' and 'ModelProcessor'

* Fixed 'Cell.assertEqual()' to normalize its input value to the same type
  that it's interpreting the cell as.  This effectively allows the fallthru
  comparison case to be 'str(value)==cell.text', when the "official" type
  for the cell is unknown.

* Fix 'ddt.web' runner to work properly when serving a single file as the
  root.  (We probably also need some way for this to support a convenient
  run-once-and-exit strategy.)

Revision 1640 - (view) (download) - [select for diffs]
Modified Mon Jan 26 02:44:10 2004 UTC (20 years, 2 months ago) by pje
File length: 4458 byte(s)
Diff to previous 1639 , to selected 1501
Implemented boolean operations on 'events.IConditional' objects, and added
'isTrue' and 'isFalse' event sources to 'IValue' objects.  So now you can
do things like 'yield aCondition & otherCondition' to wait until two
conditions are true.  Unfortunately, it is possible to have a race
condition if some code sets 'aCondition' to true before setting
'otherCondition' to false, in that as soon as both are true, the waiting
thread would resume.  Sometimes this is what you want, and sometimes not.
I'm beginning to wonder if one needs a sort of "transactionality" to
events, so that one can set a variety of values or conditions, and *then*
allow the callbacks to fire.  But that will require some further thought.

Revision 1639 - (view) (download) - [select for diffs]
Modified Mon Jan 26 00:08:16 2004 UTC (20 years, 2 months ago) by pje
File length: 4572 byte(s)
Diff to previous 1633 , to selected 1501
Made better distinctions between Value and Condition behaviors, and added
ability to easily adapt from one to the other.  Added 'events.subscribe()'
to allow automatic re-subscription to a source, with automatic or manual
cancellation (automatic happens if the subscriber goes away).  Revised
derived values and all types of conditions to work via delegation rather
than inheritance, making use of 'events.subscribe()'.  We're now in a lot
better shape for adding logical operations on conditions and making
it easier to derive conditions or values from other conditions or values.

Revision 1633 - (view) (download) - [select for diffs]
Modified Sun Jan 25 02:32:15 2004 UTC (20 years, 2 months ago) by pje
File length: 4604 byte(s)
Diff to previous 1615 , to selected 1501
Added "state of the PEAK union" doc (STATUS.txt).  Moved old changes to
HISTORY.txt.  Updated copyright and package info.  Moved ancient and
improbable TODO's out to individual packages.  Readjust a3 TODO targets so
we can release it a lot sooner, preferably within 1-3 weeks.

Revision 1615 - (view) (download) - [select for diffs]
Modified Wed Jan 21 23:38:39 2004 UTC (20 years, 2 months ago) by pje
File length: 6960 byte(s)
Diff to previous 1613 , to selected 1501
Allow threads to have an exception raised if an event occurs while a nested
generator is running.  Added 'IScheduler.alarm()' and 'events.Interrupt'.

Revision 1613 - (view) (download) - [select for diffs]
Modified Wed Jan 21 03:19:01 2004 UTC (20 years, 2 months ago) by pje
File length: 7157 byte(s)
Diff to previous 1609 , to selected 1501
Big migration to 'peak.events': 'UntwistedReactor' and 'MainLoop' are now
just facades over 'EventLoop'.  Added untested Twisted support to implement
'peak.events' interfaces as facades over a reactor.  Minor interface tweaks
in 'peak.events' to cover the needs of real (and testable) event loops.
Moved 'ifTwisted' and 'makeTwisted' to 'peak.events.api'.  Ported
'TaskQueue' and 'FastCGIAcceptor' to use threads for scheduling.  Por

Other: fixed 'commands.AbstractInterpreter' failing with usage errors at
construction time, rather than at use time.  Refactored 'CGIInterpreter' to
be an actual interpreter, and 'CGICommand' to not run an event loop unless
FastCGI is being used.  Also changed 'CGICommand' to perform setup at _run
time rather than immediately upon assembly.

Revision 1609 - (view) (download) - [select for diffs]
Modified Mon Jan 19 14:29:05 2004 UTC (20 years, 2 months ago) by pje
File length: 6888 byte(s)
Diff to previous 1608 , to selected 1501
Added draft 'ISelector' implementation, and refactored 'UntwistedReactor'
to use it for I/O events.

Revision 1608 - (view) (download) - [select for diffs]
Modified Mon Jan 19 04:03:22 2004 UTC (20 years, 2 months ago) by pje
File length: 6950 byte(s)
Diff to previous 1606 , to selected 1501
Minor TODO additions.

Revision 1606 - (view) (download) - [select for diffs]
Modified Mon Jan 19 03:35:36 2004 UTC (20 years, 2 months ago) by pje
File length: 6735 byte(s)
Diff to previous 1603 , to selected 1501
Lots of 'peak.events' migration:

Added 'events.ISignalSource', that returns 'events.Broadcaster' objects for
signals.  This allows you to yield to signals in an 'events.Thread', or
safely set one-time callbacks on them.

'running.ISignalManager' is now DEPRECATED; please use
'events.ISignalSource' instead.

'running.IMainLoop' has been changed to use an 'events.IReadable' for
the 'lastActivity' attribute, and the 'setExitCode' and 'childForked'
methods have been replaced with an 'exitWith()' method.

The 'peak.running.mainLoop.signalHandler' property has been replaced with
'peak.running.mainLoop.stopOnSignals', which defaults to including SIGINT,
SIGTERM, and SIGBREAK.  If you need custom signal handling, please use
the event sources provided by an 'events.ISignalSource'.

'peak.running.process.ChildProcess' has been rewritten to use
'events.ISignalSource' and an 'events.Thread' to monitor SIGCHLD.  Removed
'checkStatus()' from the 'running.IProcessProxy' interface.

Made most event sources weak-referenceable.

Changed 'events.Thread' to keep a reference to an object it's yielding on,
so that "weak" events like signals and I/O events will hang around until
they call back to the thread.

Revision 1603 - (view) (download) - [select for diffs]
Modified Sun Jan 18 18:41:32 2004 UTC (20 years, 2 months ago) by pje
File length: 6980 byte(s)
Diff to previous 1602 , to selected 1501
Fix 'setup.py' not installing 'csv.py'.

Revision 1602 - (view) (download) - [select for diffs]
Modified Sun Jan 18 17:58:00 2004 UTC (20 years, 2 months ago) by tsarna
File length: 6976 byte(s)
Diff to previous 1599 , to selected 1501
"csv" and "csv.<dialect_name>" cursor formaters using csv module.

Issues:
- end-of-line character handling. Right now n2 output redirection always
  gets you text mode. force csv line terminator to "\n" so you get local
  newlines for now. But what about binary output formats? Do we need
  some kind of binary-mode redirection operators?
- dialect defaults for delimiter, etc are not overrideable by n2's go
  command line options. (problem? should "go -m csv -d "\t" work the
  same as "go -m csv.excel-tab"?)
- csv.py not installed by setup.py? (haven't looked into it yet)

Revision 1599 - (view) (download) - [select for diffs]
Modified Sun Jan 18 00:38:37 2004 UTC (20 years, 2 months ago) by pje
File length: 7035 byte(s)
Diff to previous 1598 , to selected 1501
Simplified configuration for using Twisted, roughly as proposed in
http://www.eby-sarna.com/pipermail/peak/2004-January/001125.html
Also, added 'iif' function for use in .ini files.

Revision 1598 - (view) (download) - [select for diffs]
Modified Sat Jan 17 23:50:45 2004 UTC (20 years, 2 months ago) by pje
File length: 7192 byte(s)
Diff to previous 1577 , to selected 1501
Updated TODO with current a3-cycle plans.

Revision 1577 - (view) (download) - [select for diffs]
Modified Sun Dec 28 20:58:28 2003 UTC (20 years, 3 months ago) by pje
File length: 6127 byte(s)
Diff to previous 1575 , to selected 1501
First pass of 'logs' framework refactoring.  Highlights include:

 * Lots of new unit tests for logging.

 * Logs are now accessed via a 'logs.ILoggingService' instance.  The
   'logger:' URL scheme automatically accesses the nearest such service.
   For backward compatibility, the old 'peak.logs' namespace is still used
   to supply the actual loggers.  This will be gradually replaced with a
   plugin-based mechanism.

 * Log events don't use a positional 'message' argument any more, and
   loggers aren't responsible for interpolating message arguments any more.
   The new signature is 'Event(parent, msg=msg, args=args, ...)'.  Loggers
   also now tell events what logger name they are, via the 'ident' keyword.

 * The logging system now uses a property namespace, 'peak.logging.levels',
   to obtain log level names and values.  The various 'logs.LEVEL'
   constants are now DEPRECATED.  Please use the 'getLevelFor()' method of
   the nearest 'logs.ILoggingService' instead.  URL schemes such as
   'logfile:' also no longer convert their level names to numbers, since
   the level names are only meaningful in the context of a logging service.

 * Support for integration with the Python 2.3/PEP 282 logging module has
   been scaled back.  There are too many globalisms and dependencies there.
   When we add plugin-based log configuration, it should be possible to use
   the logging package's handlers and formatters with the PEAK logging
   services.  At that point, you'll be able to replace 'logging.getLogger'
   and 'logging.getLevelName' with the corresponding methods of a PEAK
   logging service, if you need to force non-PEAK packages to use PEAK's
   logging.

 * 'config.Namespace()' objects now have a 'keys()' method that can be used
   when the namespace is bound to a context component.  It returns a list
   of strings that may be used as keys for that namespace.  See
   'CHANGES.txt' for an example.

Revision 1575 - (view) (download) - [select for diffs]
Modified Sun Dec 28 14:29:58 2003 UTC (20 years, 3 months ago) by pje
File length: 6263 byte(s)
Diff to previous 1574 , to selected 1501
Fix win32 using 'time' instead of 'clock' for elapsed time.

Revision 1574 - (view) (download) - [select for diffs]
Modified Sun Dec 28 03:52:01 2003 UTC (20 years, 3 months ago) by pje
File length: 6336 byte(s)
Diff to previous 1573 , to selected 1501
Plugins have landed!

* Added 'binding.PluginKeys' and 'binding.PluginsFor'.  These are component
  keys that can be used to 'Obtain' plugins registered within a property
  namespace.  'PluginKeys' obtains a list of the plugins' configuration
  keys, while 'PluginsFor' obtains a list of the actual plugins.

* Replaced 'peak.config.registries.EigenRegistry' with
  'peak.config.registries.ImmutableConfig'.  The only use we had for
  'EigenRegistry' was to keep track of 'offerAs' settings within classes,
  and it didn't need all the extra complexity of eigenstate management.
  The new, more-specialized class is shorter, simpler, and easier to use.

Revision 1573 - (view) (download) - [select for diffs]
Modified Sun Dec 28 00:14:24 2003 UTC (20 years, 3 months ago) by pje
File length: 6649 byte(s)
Diff to previous 1571 , to selected 1501
MAJOR API REFACTORING for 'peak.config', to support iterating over
configuration keys, 'n2' navigability of properties, and much more.
Many APIs are now DEPRECATED or renamed; please see CHANGES.txt for
a complete description.  A few highlights:

 - 'config.lookup()' replaces 'findUtility' and 'getProperty'

 - 'config.iterValues()' replaces 'findUtilities'

 - 'config.iterKeys()' finds keys in a specific namespace

 - NEW: 'config.parentProviding()' and 'config.parentsProviding()'
   APIs to find parent components that support a protocol.

 - NEW: You can now use 'peak n2 config:' to explore the default
   property namespace.  For example 'ls -l peak.naming.schemes'
   will list all defined naming schemes.

Please see CHANGES.txt for the list of deprecated or removed APIs.

Revision 1571 - (view) (download) - [select for diffs]
Modified Sat Dec 27 18:26:40 2003 UTC (20 years, 3 months ago) by pje
File length: 6958 byte(s)
Diff to previous 1569 , to selected 1501
Added 'config.MultiKey()' and 'config.UnionOf()' configuration key classes,
to generalize existing specialty keys such as 'ProviderOf' and
'FactoryFor'.  (The latter two are now defined in terms of the former
two.)  Also, made classes and types usable as configuration keys.  This
was needed for the above generalization, but also makes many other
class-lookup concepts possible.  (Note that there may be some slight
changes to the effective registration and lookup order of these and other
configuration keys as of this change, as there were some previous errors
and/or ambiguities to the lookup order that were not covered by the test
suite.)

Revision 1569 - (view) (download) - [select for diffs]
Modified Fri Dec 26 15:52:30 2003 UTC (20 years, 3 months ago) by pje
File length: 7036 byte(s)
Diff to previous 1559 , to selected 1501
Finished out timer service with wildcard 'addListener()' support, and a
'timer:foo.bar' URL scheme, so you can now 'Obtain("timer:myapp.whatever")'
in your applications.  Of course, to be really useful, we need some
listeners that can log or otherwise output the statistics.  And I'm still
planning to move the time-critical parts of the Timer class to Pyrex.  But
the timing framework itself is now complete and ready-to-use.

Revision 1559 - (view) (download) - [select for diffs]
Modified Sun Dec 21 21:44:27 2003 UTC (20 years, 3 months ago) by pje
File length: 7098 byte(s)
Diff to previous 1558 , to selected 1501
Significant refactoring of skin/layer/resource/interaction/service classes
in 'peak.web'.  Primary goal was to allow layers to be shared between
skins, but several other things were also accomplished:

 * Got rid of properties to configure services and factories, using
   "[Component Factories]" mechanism instead.

 * Added explicit interfaces for auth/skin/layer/resource services

 * Interaction and InteractionPolicy implement various services by
   delegation, so things like 'interaction.skin.getResource()' are
   now 'interaction.getResource()' and 'policy.skinSvc.getSkin()'
   is now 'policy.getSkin()', etc.

 * Cleaned up various "spaghetti bindings" that wandered all over the
   place.

 * Added 'IInteractionPolicy.newInteraction()' for cleaner creation of
   interaction instances.

 * Added layer service mechanism to allow layers to be reused among skins.
   Layers are defined in the 'peak.web.layers' property namespace.

 * Added skin service mechanism that locates skins using
   'interaction.skinName' (which defaults to '"default"').  Skins are
   defined in the 'peak.web.skins' property namespace.

 * Simplified 'config.CreateViaFactory' to allow factories with
   no arguments.

Revision 1558 - (view) (download) - [select for diffs]
Modified Sun Dec 21 16:23:26 2003 UTC (20 years, 3 months ago) by pje
File length: 7301 byte(s)
Diff to previous 1556 , to selected 1501
Fixed 'text' DOMlet not XML-quoting output.  Added 'xml' DOMlet for
outputting already-quoted output.  Added 'notag', 'text.notag', and
'xml.notag' variants that throw away their opening/closing tags.  'notag'
does nothing except throw away the open/close tags, which is useful when
'pwt:define'-ing a block that has multiple elements in it, among other
things.  With 'text.notag' or 'xml.notag', you can now embed text in other
text without needing to keep the "span" in the output.

Revision 1556 - (view) (download) - [select for diffs]
Modified Sun Dec 21 02:24:14 2003 UTC (20 years, 3 months ago) by pje
File length: 7360 byte(s)
Diff to previous 1553 , to selected 1501
Added "[Import on Demand]" section type to .ini files, allowing you to
define shortcuts for modules that you frequently reference in your
configuration.  This lets you replace e.g.
'importString("foo.bar.baz:Spam")' with 'foo_baz.Spam' in expressions, by
adding something like this::

  [Import on Demand]
  foo_bar = "foo.bar.baz"

to your configuration.  The defined shortcut is then available for the
remainder of that configuration file, and in any .ini files included from
the current file.  See 'peak.ini' for an example and more info.

Revision 1553 - (view) (download) - [select for diffs]
Modified Sat Dec 20 18:13:45 2003 UTC (20 years, 3 months ago) by pje
File length: 7418 byte(s)
Diff to previous 1528 , to selected 1501
Logging-related interfaces have been moved into the 'peak.running.logs'
module.  So, what used to be 'running.ILogger' is now 'logs.ILogger'.

Log events now use a standard component construction signature, and the
class used for event objects is now configurable as the factory for
'logs.ILogEvent'.  (See "Component Factories" in 'peak.ini'.)

By popular demand, 'logs.ILogger' (and its default implementation) now
includes 'trace()', 'notice()', 'alert()' and 'emergency()' methods that
use the corresponding 'syslog' priority levels.  'logs.IBasicLogger' has
been added, to reflect the narrower interface provided by PEP 282, and
there is an adapter that can extend PEP 282 loggers with the other methods.

Finally, added 'logs.ILoggingService' (for future implementation), and
updated TODO to reflect short-term project priorities that take precedence
over the alpha 3 release for now.

Revision 1528 - (view) (download) - [select for diffs]
Modified Fri Dec 5 01:12:27 2003 UTC (20 years, 3 months ago) by pje
File length: 6461 byte(s)
Diff to previous 1518 , to selected 1501
Added 'peak.core' as a minimal subset of 'peak.api'.  'peak.core' offers
only "core" API packages and primitives, not the full set of available
framework APIs.  'peak.api' will continue to expand as frameworks are
added, but 'peak.core' will stay as small as practical.  ('peak.exceptions'
may in fact end up being removed from 'peak.core', or at least renamed.)

Also, added 'peak.util.symbol' module, to contain 'NOT_GIVEN', 'NOT_FOUND',
and the 'Symbol' class used to create them.

Revision 1518 - (view) (download) - [select for diffs]
Modified Wed Dec 3 04:08:12 2003 UTC (20 years, 4 months ago) by tsarna
File length: 6286 byte(s)
Diff to previous 1504 , to selected 1501
Give peak.running.tools a promotion... it's now just peak.tools

Revision 1504 - (view) (download) - [select for diffs]
Modified Sat Nov 29 04:17:15 2003 UTC (20 years, 4 months ago) by pje
File length: 6356 byte(s)
Diff to previous 1502 , to selected 1501
Firm up the plans for 0.5a3 a bit.

Revision 1502 - (view) (download) - [select for diffs]
Modified Fri Nov 28 23:59:01 2003 UTC (20 years, 4 months ago) by pje
File length: 5903 byte(s)
Diff to previous 1501
Clean up __repr__'s for bindings, for convenient use of help() and other
documentation tools.

Revision 1501 - (view) (download) - [selected]
Modified Fri Nov 28 21:51:50 2003 UTC (20 years, 4 months ago) by pje
File length: 5969 byte(s)
Diff to previous 1496
Added 'naming.Indirect(key)', a 'binding.IComponentKey' that can be used to
do an indirect lookup via another 'IComponentKey' (such as a name).  Using
'naming.Indirect()', you can replace code like this::

    socket = binding.Obtain(
        lambda self: self.lookupComponent(self.socketURL),
        adaptTo = [IListeningSocket]
    )

with code like this::

    socket = binding.Obtain(
        naming.Indirect('socketURL'), adaptTo = [IListeningSocket]
    )

Revision 1496 - (view) (download) - [select for diffs]
Modified Wed Nov 26 23:53:22 2003 UTC (20 years, 4 months ago) by pje
File length: 6070 byte(s)
Diff to previous 1407 , to selected 1501
Remove process supervisor from TODO, add it to CHANGES and README.  Also,
added a link from its ZConfig schema to the original design proposal, since
it'll no longer be linked from the TODO.

Revision 1407 - (view) (download) - [select for diffs]
Modified Fri Oct 3 23:06:06 2003 UTC (20 years, 5 months ago) by pje
File length: 6180 byte(s)
Diff to previous 1401 , to selected 1501
Semi-futile attempt to fix up the tutorial for the new binding API.  We're
probably going to have to scrap the tutorial altogether soon, it's aging
far too rapidly relative to the capabilities of the codebase.  :(

Revision 1401 - (view) (download) - [select for diffs]
Modified Sat Sep 27 01:52:02 2003 UTC (20 years, 6 months ago) by pje
File length: 6213 byte(s)
Diff to previous 1380 , to selected 1501
First phase of the binding API simplification, including detailed docs
for 'Descriptor' and 'Attribute'.  (Second phase will be mass
search-and-replace of the API's usage in PEAK, third will be additional
tests and docs.)

Added 'binding.Require', 'binding.Obtain', 'binding.Make', and
'binding.Delegate'.  *ALL* other binding types are now DEPRECATED, and will
go away before 0.5 beta is released.  Please see CHANGES.txt for a detailed
mapping of how to translate from the old to new API, and let me know if
anything's missing.

Note that the new 'Make' and 'Obtain' bindings also support sequences of
recipes and keys, and in those cases will produce a sequence of the results
from those recipes or keys.  Also, 'Make' will accept no-argument and
one-argument callables,  where 'Once' always required three-argument
functions.  This should make it a lot easier to write short binding
functions.

Also, note that the 'activateUponAssembly' keyword is now 'uponAssembly',
and 'isVolatile' is now 'noCache'.  (The old names will work as keyword
arguments until the alpha 4 development cycle begins.)  The
'binding.IActiveDescriptor' interface also changed as a result of this.
Last, but not least, a 'binding.IRecipe' interface was added, to support
the new 'binding.Make' type.

Revision 1380 - (view) (download) - [select for diffs]
Modified Wed Sep 3 03:05:21 2003 UTC (20 years, 6 months ago) by pje
File length: 6267 byte(s)
Diff to previous 1378 , to selected 1501
Misc. TODO updates

Revision 1378 - (view) (download) - [select for diffs]
Modified Sun Aug 31 00:23:04 2003 UTC (20 years, 7 months ago) by pje
File length: 6341 byte(s)
Diff to previous 1377 , to selected 1501
'naming.IBasicContext.lookup()' and 'naming.lookup()' now accept a 'default'
argument, similar to that used by 'lookupComponent()' and most other
lookup-like APIs in PEAK.  This change was made so that component lookups
don't need to rely on catching 'exceptions.NameNotFound' errors to tell them
when to use the default value.  This could hide 'NameNotFound' errors that
were actually from a broken component somewhere in the lookup process.  (In
general, it's probably a bad idea to have an exception that's used for both
control flow and real errors!)

Also, removed most trapping of 'NameNotFound' errors throughout PEAK,
except for those in N2, which I'll leave for Ty.  :)  Last, but not least,
cleaned up documentation of related interfaces/methods.

Revision 1377 - (view) (download) - [select for diffs]
Modified Sat Aug 30 23:42:54 2003 UTC (20 years, 7 months ago) by pje
File length: 6726 byte(s)
Diff to previous 1369 , to selected 1501
Got rid of worst remaining 'isinstance()' occurrences in binding and
naming; updated TODO.

Revision 1369 - (view) (download) - [select for diffs]
Modified Fri Aug 29 21:11:53 2003 UTC (20 years, 7 months ago) by pje
File length: 6819 byte(s)
Diff to previous 1366 , to selected 1501
Misc. TODO additions

Revision 1366 - (view) (download) - [select for diffs]
Modified Fri Aug 29 13:34:38 2003 UTC (20 years, 7 months ago) by tsarna
File length: 6480 byte(s)
Diff to previous 1365 , to selected 1501
Introduce peak.net for implementations of network protocols and other
general networking-related features that don't really fit into storage,
naming, etc.

Also, an icb protocol implementation work-in-progress.  ICB ("Internet
CB") is an ancient chat protocol that's not widely used anymore except
in some circles.  This is more of an example than something likely to be
useful by many people, but I have a use for it. Still needs work, though.

Revision 1365 - (view) (download) - [select for diffs]
Modified Thu Aug 28 17:49:56 2003 UTC (20 years, 7 months ago) by pje
File length: 6591 byte(s)
Diff to previous 1198 , to selected 1501
Split up items into alpha 3/alpha 4 releases, many more details, removed a
few completed items.

Revision 1198 - (view) (download) - [select for diffs]
Modified Thu Jun 19 20:53:21 2003 UTC (20 years, 9 months ago) by pje
File length: 4842 byte(s)
Diff to previous 1197 , to selected 1501
There is now an interface for "Active Descriptors":
'binding.IActiveDescriptor'.  'peak.binding' now uses this interface to
identify active descriptors, so you can now create your own.  (Previously,
'peak.binding' used 'isinstance()' to detect active descriptors.)

Revision 1197 - (view) (download) - [select for diffs]
Modified Thu Jun 19 18:57:23 2003 UTC (20 years, 9 months ago) by pje
File length: 4926 byte(s)
Diff to previous 1191 , to selected 1501
The naming system base classes no longer use 'attrs' as an input parameter
or return value. If you've subclassed anything from 'peak.naming.contexts',
note that your '_get()' methods should now just return the lookup value,
rather than a 'state,attrs' tuple.  For most naming contexts, this just
means you should change 'return foo, None' statements to just 'return foo'.

Revision 1191 - (view) (download) - [select for diffs]
Modified Wed Jun 18 18:27:39 2003 UTC (20 years, 9 months ago) by pje
File length: 4998 byte(s)
Diff to previous 1180 , to selected 1501
All 'peak.binding' APIs now only accept positional parameters for items
unique to that API.  Items common to multiple APIs (such as 'offerAs',
'doc', 'attrName', etc.) should now be supplied as keyword arguments.

Bindings also now automatically "suggest" the containing object as a parent
component for the contained object, whenever a value is assigned to them or
computed.  If a non-None 'adaptTo' is set on the binding, the value assigned
or computed will be adapted to the specified protocol before the parent
component is suggested.  'binding.New()' no longer relies on the
'IComponentFactory' interface, but instead uses the new adapt/suggest
mechanisms.

Previously, parent components were only "suggested" when a binding was set
via component constructor keyword arguments.  Now, this is done at any time
bindings are set, but *not* for non-binding keyword arguments.  In other
words, ordinary attributes of a component do not receive "suggested parent"
notices, even when set via constructor keyword arguments.  If you want an
attribute to do this, you must define the attribute with the binding API;
e.g. via 'requireBinding()' or 'binding.Constant()'.

Revision 1180 - (view) (download) - [select for diffs]
Modified Tue Jun 10 20:21:26 2003 UTC (20 years, 9 months ago) by pje
File length: 5297 byte(s)
Diff to previous 1149 , to selected 1501
Finished URLChecker and FileCleaner demo daemons; updated CHANGES and TODO.

Revision 1149 - (view) (download) - [select for diffs]
Modified Thu May 29 22:02:59 2003 UTC (20 years, 10 months ago) by pje
File length: 4641 byte(s)
Diff to previous 1130 , to selected 1501
Removed items that were completed, redundant, or became non-goals.  Also
some minor rescheduling and feature additions.

Revision 1130 - (view) (download) - [select for diffs]
Modified Mon May 19 17:33:59 2003 UTC (20 years, 10 months ago) by pje
File length: 5031 byte(s)
Diff to previous 1126 , to selected 1501
Misc. edits preparing for 0.5a2

Revision 1126 - (view) (download) - [select for diffs]
Modified Mon May 19 13:09:27 2003 UTC (20 years, 10 months ago) by pje
File length: 4969 byte(s)
Diff to previous 1125 , to selected 1501
Added a ZConfig schema for 'running.commands.EventDriven' applications,
a ZConfig component definition for adaptive tasks, and a running shortcut
called 'EventDriven'.  It should now be possible to do this::

     #!/usr/bin/env peak EventDriven

at the top of a ZConfig file formatted according to the new schema, and
have it run.  Unfortunately, so far the only type of task that can be
included is 'running.daemons.AdaptiveTask', which doesn't actually *do*
anything.  So, right now doing this is equivalent to creating an over-
engineered 'sleep' command.  ;)

Also, fixed a problem in ZConfig 'schema.dtd'; I used 'PCDATA' where I
should've used 'CDATA', and I fixed various problems with the
'fromZConfig()' component constructor.  It's kind of annoying that ZConfig
defaults unspecified items to 'None', even if you said they weren't
required and had no default. :(  I'll see if I can do something about this
later; for now I just delete 'None' values from the data.

Revision 1125 - (view) (download) - [select for diffs]
Modified Mon May 19 02:02:13 2003 UTC (20 years, 10 months ago) by pje
File length: 4965 byte(s)
Diff to previous 1122 , to selected 1501
Added ZConfig URL support.  ZConfig schemas and files can be loaded from
any PEAK-supported stream URL, including 'pkgfile:'.  Interfile references
aren't tested yet, nor are there any unit tests.  Those will be added once
we have some meaningful schemas and configurations to test with.  There
is a 'zconfig.schema' URL scheme that loads a command interpreter, and
a 'peak ZConfig' option as well.  See 'CHANGES.txt' for details on the new
features.  Also, fixed up some issues with the 'fromZConfig()' component
constructor.  All we need now are some useful base schemas for daemons,
and the last piece for 0.5a2 (besides PyProtocols) will be in place.

Revision 1122 - (view) (download) - [select for diffs]
Modified Sun May 18 00:03:27 2003 UTC (20 years, 10 months ago) by pje
File length: 5159 byte(s)
Diff to previous 1115 , to selected 1501
Added the UML 1.4 metamodel, and thus the ability to load UML 1.4
models encoded in XMI 1.1.

Added support in the mof2py code generator for "unprefixing" enumerated
values, so that UML and other metamodels' enumerations work correctly
when loading from XMI.

Fixed source distributions missing essential setup files.

Rescheduled UML 1.5 and CWM support to version 0.6.  Hardly any tools
use UML 1.5 yet, and we can't do anything useful with CWM until we have
XMI writing, and some type of UI for editing models.

Revision 1115 - (view) (download) - [select for diffs]
Modified Wed May 14 02:52:51 2003 UTC (20 years, 10 months ago) by pje
File length: 5219 byte(s)
Diff to previous 1108 , to selected 1501
Began the move of 'peak.interface' to a separate 'protocols' package for
ease of distribution independently of PEAK.  Also, removed caching of
success/failed adapter lookups, because there was no way for them to be
cleared when declarations were made for base classes of a class whose
lookup was cached.  (To do caching, I'll have to add a separate cache.)

In the next pass, I'll add the new declaration API that Ty and I designed,
and then change PEAK to use it, factoring out the interim API, and changing
the few remaining introspections in PEAK to work via adapation.  Then, it's
off to documentation, unit tests, and packaging for the 'protocols'
package.

Revision 1108 - (view) (download) - [select for diffs]
Modified Sat May 10 21:29:49 2003 UTC (20 years, 10 months ago) by pje
File length: 5203 byte(s)
Diff to previous 1092 , to selected 1501
Farewell, 'zope.interface'.  You served us well.

Revision 1092 - (view) (download) - [select for diffs]
Modified Fri May 9 00:14:32 2003 UTC (20 years, 10 months ago) by pje
File length: 5108 byte(s)
Diff to previous 1079 , to selected 1501
Misc. doc edits

Revision 1079 - (view) (download) - [select for diffs]
Modified Sat May 3 22:20:41 2003 UTC (20 years, 11 months ago) by pje
File length: 5186 byte(s)
Diff to previous 1061 , to selected 1501
Updated TODO.

Revision 1061 - (view) (download) - [select for diffs]
Modified Thu May 1 17:43:55 2003 UTC (20 years, 11 months ago) by pje
File length: 5488 byte(s)
Diff to previous 1060 , to selected 1501
Added 'fcgiapp' to distribution; this should be the final checkin for
0.5a1, barring any bug or doc fixes that come up while prepping
the release.

Revision 1060 - (view) (download) - [select for diffs]
Modified Thu May 1 16:32:39 2003 UTC (20 years, 11 months ago) by pje
File length: 5657 byte(s)
Diff to previous 1058 , to selected 1501
Paramegeddon!  Adjusted API signatures so that all calls that have a
context component, have it as the first parameter.  Changed functions,
methods, and classes are:

* binding.acquireComponent()

* binding.lookupComponent()

* config.getProperty()

* config.findUtility()

* config.findUtilities()

* config.PropertyMap.getValueFor()

* config.IConfigSource._getConfigData()

* config.PropertySet()

* naming.lookup()

* naming.parseURL()

Also, renamed 'config.LazyLoader' -> 'config.LazyRule' to reduce confusion
with 'storage.LazyLoader', which has a very different purpose/function.

Revision 1058 - (view) (download) - [select for diffs]
Modified Wed Apr 30 23:58:14 2003 UTC (20 years, 11 months ago) by pje
File length: 5715 byte(s)
Diff to previous 1056 , to selected 1501
Tutorial edits to sync w/current API.

Revision 1056 - (view) (download) - [select for diffs]
Modified Wed Apr 30 23:08:45 2003 UTC (20 years, 11 months ago) by pje
File length: 5792 byte(s)
Diff to previous 1055 , to selected 1501
Stamp out '_provides', replace with 'declareAsProviderOf'.  Removed
extraneous '_provides' declarations left over from the days when classes
could effectively be their own 'binding.New'.  I decided not to document
the interface of attribute binding objects at this time, because the
implementation is tied to the classes right now anyway.

Also, misc. TODO edits.

Revision 1055 - (view) (download) - [select for diffs]
Modified Wed Apr 30 22:40:30 2003 UTC (20 years, 11 months ago) by pje
File length: 5876 byte(s)
Diff to previous 1051 , to selected 1501
Finished adding tests for daemons and schedulers.

Revision 1051 - (view) (download) - [select for diffs]
Modified Wed Apr 30 17:23:37 2003 UTC (20 years, 11 months ago) by pje
File length: 6041 byte(s)
Diff to previous 1046 , to selected 1501
Added one more "assembly events" test case.  Updated TODO to reflect what
I hope is the final release checklist for 0.5a1.

Revision 1046 - (view) (download) - [select for diffs]
Modified Wed Apr 30 02:29:49 2003 UTC (20 years, 11 months ago) by pje
File length: 5935 byte(s)
Diff to previous 1037 , to selected 1501
Moved ZConfig integration from 0.5a1 to 0.5a2; there's just not enough
time for it to make it in this week.  The remaining unit tests, doc fixes
and misc. cleanups are more important for this iteration.

Revision 1037 - (view) (download) - [select for diffs]
Modified Mon Apr 28 12:51:46 2003 UTC (20 years, 11 months ago) by pje
File length: 5930 byte(s)
Diff to previous 1034 , to selected 1501
Barring any emergencies, we should reach 0.5a1 within a week.  Updated
TODO to reflect current status; adjusted stream factory signatures so that
'autocommit' is only required to be specified for non-readonly operations.

Revision 1034 - (view) (download) - [select for diffs]
Modified Sun Apr 27 22:48:11 2003 UTC (20 years, 11 months ago) by pje
File length: 6322 byte(s)
Diff to previous 996 , to selected 1501
Misc. TODO updates.  0.5a1 looms nearer!

Revision 996 - (view) (download) - [select for diffs]
Modified Fri Apr 18 14:02:04 2003 UTC (20 years, 11 months ago) by pje
File length: 6702 byte(s)
Diff to previous 982 , to selected 1501
Began update of TODO to match current 0.5 alpha release plans

Revision 982 - (view) (download) - [select for diffs]
Modified Wed Apr 16 12:50:18 2003 UTC (20 years, 11 months ago) by pje
File length: 5456 byte(s)
Diff to previous 966 , to selected 1501
First draft implementation of system scheduling proposal.  (Also, misc.
TODO additions.) Interfaces have been streamlined and names changed.
Daemons are now "periodic tasks", and the provided base class implements an
"adaptive task" interface.  "Daemonic app", "event loop", and "daemon
scheduler" are now just a single "system scheduler" interface, which can
schedule periodic tasks as well as one-offs.  I settled on "higher priority
number" = "higher priority" for priority sorting.

I'm beginning to like this whole "asynchronous programming" model that
Twisted provides.  AdaptiveTask (formerly BaseDaemon) is a lot simpler,
MultiDaemon went away, and the system scheduler is only two screens
of code to manage idle timeouts, prioritized task scheduling, and more.
Heck, "shutdown after X" was as simple as 'callLater(duration,self.stop)'!

There is one minor problem in this draft...  if a task raises an unhandled
exception, it won't be scheduled for further re-run.  I'm not sure if this
is a bug or feature yet.  It should be easy to fix, though.

Revision 966 - (view) (download) - [select for diffs]
Modified Sat Apr 5 20:44:59 2003 UTC (20 years, 11 months ago) by pje
File length: 5213 byte(s)
Diff to previous 963 , to selected 1501
REINSTALL WARNING: a package was removed from setup.py on this change,
so be sure to *delete* your PEAK installation from 'site-packages' before
reinstalling.  Also be sure to update your checkout with 'cvs update -dPA'.

Change notes:

* It's now possible to use 'config.declareModule()' to patch third-party
  (i.e. non-PEAK) modules, and also to pre-declare inheritance or patch
  data for modules inherited via package inheritance.  This was done to
  make PEAK/Zope reusage/patching easier, and also to ease patching of
  large generated-code models (like UML and CWM).

* The patches to add "Pythonic features" to UML models are now in a
  separate module, 'peak.metamodels.core_addons', so that they can be
  shared amongst all UML versions.  This was made possible by the
  new 'declareModule()' function.

* Cleaned up and removed the now-unnecessary subpackage of UML13 that was
  there just to provide a home for the patches that can now be applied by
  "remote control", so to speak.

* 'lazyModule()' now has an extra parameter that can be used to hook the
  initial loading of a module.  This was added so that 'declareModule()'
  can patch modules when they are loaded.

Revision 963 - (view) (download) - [select for diffs]
Modified Fri Apr 4 21:23:31 2003 UTC (20 years, 11 months ago) by pje
File length: 5242 byte(s)
Diff to previous 961 , to selected 1501
Got rid of deprecated 'peak.model' classes: Model, Package, Reference, etc.

Revision 961 - (view) (download) - [select for diffs]
Modified Thu Apr 3 22:39:50 2003 UTC (20 years, 11 months ago) by pje
File length: 5355 byte(s)
Diff to previous 959 , to selected 1501
Partial cleanup of '__class_provides__'; now it's supplied by the most
basic metaclass (Activator), instead of being poked in by 'Once' attributes
after the fact.  There probably really should be a 'registerAttribute'
interface method or something for this, but at least now it's not *too*
unbearably ugly.

Revision 959 - (view) (download) - [select for diffs]
Modified Thu Apr 3 14:33:53 2003 UTC (21 years ago) by pje
File length: 5355 byte(s)
Diff to previous 954 , to selected 1501
Added basic plans for 0.5a1 (bugfixes, cleanups, and XMI writing), and
0.5a2 (runtime infrastructure enhancements such as ZConfig support, and
dynamic class mixins).

Revision 954 - (view) (download) - [select for diffs]
Modified Tue Apr 1 22:33:51 2003 UTC (21 years ago) by pje
File length: 4081 byte(s)
Diff to previous 860 , to selected 1501
Removed some completed or no longer applicable "future" items.

Revision 860 - (view) (download) - [select for diffs]
Modified Fri Feb 7 23:55:35 2003 UTC (21 years, 1 month ago) by pje
File length: 4367 byte(s)
Diff to previous 752 , to selected 1501
Removed misc. completed, outdated, or redundant TODO items.

Revision 752 - (view) (download) - [select for diffs]
Modified Wed Nov 27 00:32:49 2002 UTC (21 years, 4 months ago) by pje
File length: 5110 byte(s)
Diff to previous 708 , to selected 1501
Added type conversion support for 'ManagedConnection.txnTime'.

Revision 708 - (view) (download) - [select for diffs]
Modified Tue Nov 19 02:58:37 2002 UTC (21 years, 4 months ago) by pje
File length: 5295 byte(s)
Diff to previous 707 , to selected 1501
Added FacadeDM - a data manager that "fronts" for other DM(s) via a
different key: just override its 'retrieve()' and 'oidFor()' methods.

Revision 707 - (view) (download) - [select for diffs]
Modified Tue Nov 19 02:43:42 2002 UTC (21 years, 4 months ago) by pje
File length: 5331 byte(s)
Diff to previous 700 , to selected 1501
Support disjoint collections as allowed by the XMI spec.  Misc. TODO
updates to remove stuff recently accomplished.

Revision 700 - (view) (download) - [select for diffs]
Modified Sun Nov 17 22:10:18 2002 UTC (21 years, 4 months ago) by pje
File length: 5606 byte(s)
Diff to previous 692 , to selected 1501
Added lazy load for persistent object attrs and implemented QueryDM base
class by refactoring EntityDM into QueryDM and EntityDM.  Similarly split
interfaces into IDataManager and IWritableDM.

Revision 692 - (view) (download) - [select for diffs]
Modified Sun Nov 17 02:41:03 2002 UTC (21 years, 4 months ago) by pje
File length: 5689 byte(s)
Diff to previous 691 , to selected 1501
Added LDAP field type converter support, with unit tests.  This uses the
'peak.ldap.field_converters.*' property namespace, looking up the field
names to find a converter (or import string thereof) that takes two
arguments (name and value) and returns a replacement value.  The value
passed in may be 'None' if no value was present in the retrieved data.
Otherwise, it's a list of values returned from the LDAP directory (except
for the 'dn' field, which is always just a string.)  Converters are
imported from within the peak.storage package, so we can add some
"standard" converters and then reference them with import strings
like '"LDAP.someConverter"'.

Revision 691 - (view) (download) - [select for diffs]
Modified Sun Nov 17 01:42:29 2002 UTC (21 years, 4 months ago) by pje
File length: 5725 byte(s)
Diff to previous 689 , to selected 1501
AbstractRack -> EntityDM

Revision 689 - (view) (download) - [select for diffs]
Modified Sun Nov 17 01:27:14 2002 UTC (21 years, 4 months ago) by pje
File length: 5786 byte(s)
Diff to previous 688 , to selected 1501
Misc. typo fixes

Revision 688 - (view) (download) - [select for diffs]
Modified Sun Nov 17 01:21:43 2002 UTC (21 years, 4 months ago) by pje
File length: 5784 byte(s)
Diff to previous 678 , to selected 1501
Fixed hard tabs in TODO.txt; updated re: Persistence package merge.

Revision 678 - (view) (download) - [select for diffs]
Modified Fri Nov 15 16:14:17 2002 UTC (21 years, 4 months ago) by tsarna
File length: 5775 byte(s)
Diff to previous 670 , to selected 1501
Update for current status

Revision 670 - (view) (download) - [select for diffs]
Modified Tue Nov 12 21:25:29 2002 UTC (21 years, 4 months ago) by pje
File length: 5428 byte(s)
Diff to previous 663 , to selected 1501
Misc. additions/clarifications of TODO list.

Revision 663 - (view) (download) - [select for diffs]
Modified Sun Nov 10 21:13:42 2002 UTC (21 years, 4 months ago) by pje
File length: 5157 byte(s)
Diff to previous 661 , to selected 1501
SQL error handling and joinTxn() shortcut

* SQL errors are now logged; __traceback_info__ is set, although our
  current traceback formatter for logging doesn't use it yet.  We also
  maybe should log SQL warnings at LOG_WARNING level instead of LOG_ERROR.

* You can now supply joinTxn=(a true value) as a keyword arg to a SQL
  query executed on an SQLConnection, and the connection will join the
  transaction.  This seems cleaner in actual use than a separate .joinTxn()
  call.

* Fixed some issues with Gadlfy not implementing the full DBAPI - or even
  a decent fraction of it.  :(

Revision 661 - (view) (download) - [select for diffs]
Modified Sun Nov 10 20:07:30 2002 UTC (21 years, 4 months ago) by pje
File length: 5341 byte(s)
Diff to previous 660 , to selected 1501
PropertyName -> peak.api; Improved lazy import facility

* naming.PropertyName is now simply PropertyName; it never really had much
  to do with naming in the first place, doesn't depend on anything else,
  and needs to be accessible in all major subpackages and in end-user API
  calls.  So now it's in-line in the peak.api module.

* Added a 'lazyModule(moduleName)' function to peak.util.imports.  This
  new "next generation" way of creating a lazily-loaded module actually
  creates an object that *will be* the real module in sys.modules, and once
  loaded will be indistinguishable from an ordinary Python module.  (Well,
  under Python 2.3 the type() will be different, but you can't have
  everything.)  I was getting really fed up of tracing into
  lazyImport.__getattr__ during debugging sessions, so I was inspired to
  come up with something that would only have code overhead when it's first
  touched.  Subclassing ModuleType, adding a __getattribute__ method, and
  clever use of the Python 'reload()' function saved the day.

* This now completes all the non-documentation items I want for 0.5a1,
  although I may "work ahead" a little on the features list, especially if
  Ty keeps pressing for SQL type maps and LDAP schemas.  ;)  (In truth, I'd
  like those and some of the other database features Real Soon Now myself.)

Revision 660 - (view) (download) - [select for diffs]
Modified Sun Nov 10 16:55:18 2002 UTC (21 years, 4 months ago) by tsarna
File length: 5595 byte(s)
Diff to previous 656 , to selected 1501
pgsql works, and txn integration tested.

Also note that txnTime should be converted when we have SQL result type
converters.

Revision 656 - (view) (download) - [select for diffs]
Modified Sun Nov 10 02:46:58 2002 UTC (21 years, 4 months ago) by pje
File length: 5595 byte(s)
Diff to previous 655 , to selected 1501
Added [Load on demand] rules section, and made running.clusters use it.
Also added basic unit tests for peak.running.clusters.

Revision 655 - (view) (download) - [select for diffs]
Modified Sat Nov 9 22:06:07 2002 UTC (21 years, 4 months ago) by pje
File length: 5686 byte(s)
Diff to previous 654 , to selected 1501
Components now support names and paths:

* Objects created by naming system lookup, binding.New(), or
  AutoCreated, can all now automatically receive information
  about their name as well as their parent component.

* binding.getComponentName() gets an object's name or 'None'

* binding.getComponentPath(c, relativeTo=None) gets an object's
  path from its root component, or as a relative path from
  'relativeTo' (assumes 'relativeTo' is a parent of 'c').
  Unknown names are rendered as '*' in the path.

* Added 'binding.Acquire' after all.

* Improved management of _p_jar/_p_oid by model.Element, using
  _p_jar as the parent component, and _p_oid as the component
  name for elements.

* Added unit tests for name and path support.

Revision 654 - (view) (download) - [select for diffs]
Modified Sat Nov 9 18:25:01 2002 UTC (21 years, 4 months ago) by pje
File length: 5788 byte(s)
Diff to previous 653 , to selected 1501
Added some more to-do items.

Revision 653 - (view) (download) - [select for diffs]
Modified Sat Nov 9 00:18:17 2002 UTC (21 years, 4 months ago) by pje
File length: 5478 byte(s)
Diff to previous 652 , to selected 1501
Added more details and items to TODO so I won't forget them.  :)

Revision 652 - (view) (download) - [select for diffs]
Modified Sat Nov 9 00:05:52 2002 UTC (21 years, 4 months ago) by pje
File length: 5103 byte(s)
Diff to previous 640 , to selected 1501
Reorgs and and misc. cleanups; updated TODO for 0.5a1 vs 0.5final

Moved ActiveDescriptor(s) classes from binding.meta to binding.once and the
rest of binding.meta to model.method_exporter.  Moved the method-exporter
tests that lived in metamodels.tests.General to model.tests, where they
really belonged, and added model.tests to the install and API test suite.

Revision 640 - (view) (download) - [select for diffs]
Modified Fri Nov 8 03:11:08 2002 UTC (21 years, 4 months ago) by pje
File length: 5080 byte(s)
Diff to previous 617 , to selected 1501
Added working support for Gadfly.  Misc. cleanups/fixes and TODO updates.

Revision 617 - (view) (download) - [select for diffs]
Modified Thu Nov 7 00:12:14 2002 UTC (21 years, 4 months ago) by pje
File length: 5311 byte(s)
Diff to previous 615 , to selected 1501
Reformatted peak.running.clusters docstring to structured text for better
HappyDoc output.  Defined the rule for 'peak.running.cluster._filename' in
peak.ini instead of in the code.

Renamed PropSet to PropertySet, and made it possible to go from a
PropertyName to a PropertySet by calling '.of()' (e.g.
'PropertyName("foo").of(anObj)'.  PropertySets can now reproduce in various
ways, e.g.:

     c = PropertyName('peak.running.cluster').of(None) # -> PropertySet

     c._host['two.baz.com']	# ('even','prime','weird')
     c._groups()		# ('odd','even','prime','weird','qux')

But none of this is documented yet and possibly subject to change.  :)
(Especially since we're probably going to change how the cluster namespace
works anyhow!)

Ideally, it should be easy to go from a property name to its value or to
a property set, and to go from a property set to a value in some namespace.
Of course, it's somewhat questionable whether we'll be doing this for that
many properties in the first place!  And this is all going to go "full
circle" once properties have a naming context that can be used to look
them up in.  I worry a bit about creeping TMTOWTDI-ism in all this.  :(

Revision 615 - (view) (download) - [select for diffs]
Modified Wed Nov 6 20:38:22 2002 UTC (21 years, 4 months ago) by pje
File length: 4945 byte(s)
Diff to previous 601 , to selected 1501
Reverted the ability to omit schemes/bodies from parsed URLs, since that
might violate the IName interface contract for URLs!  Fixed a problem with
_defaultScheme support.  Made some notes in TODO about issues in the naming
system that need review/investigation.

Revision 601 - (view) (download) - [select for diffs]
Modified Tue Nov 5 02:58:50 2002 UTC (21 years, 4 months ago) by pje
File length: 4706 byte(s)
Diff to previous 600 , to selected 1501
Made peak.model StructuralFeatures use a uniform API for manipulating
object attributes, which will make it easier to implement "lazy load"
attributes later, and made it easier to implement _p_change support, which
was also added.  IBindingAPI now includes _getBinding, _setBinding,
_delBinding, and _hasBinding methods, and model.Element sets _p_changed
when a modifier method is called.  Also did some more TODO reprioritizing;
it now reflects the 0.5 priority order much better, even though it still
lumps items together by package.

Revision 600 - (view) (download) - [select for diffs]
Modified Tue Nov 5 02:19:47 2002 UTC (21 years, 4 months ago) by pje
File length: 4783 byte(s)
Diff to previous 596 , to selected 1501
* Added 'binding.Constant(key, value)', which allows you to specify
  a constant value to be used as a property or utility in that
  component subtree.

* Added storage.get/begin/commit/abortTransaction() APIs for ease
  of use in short scripts.  Defined a default provider for
  ITransactionService in peak.ini that provides each component root
  with its own TransactionService instance.  It's easily replaceable
  with other allocation strategies, if it should be needed.  I may
  change this later to a per-root strategy, since the current strategy
  requires creating localConfigs for each component root.  We'll see
  what actual use has to say about the best way of doing it.

* Fixed a problem with local/global config object startup that could
  cause "phantom" configuration objects to appear via recursion of
  getLocal() or getGlobal().

* Got rid of binding.meta.assertInterfaces, which is no longer needed
  because the Interface package now correctly handles metaclass
  instances.

* Got rid of Singleton, since it's not used for anything and I could
  neither think of any use cases nor remember why I added it in the
  first place!

* Made it possible for CachingProviders to cache per-localConfig as well
  as per-object.  This is handy for implementing per-hierarchy services,
  like the TransactionService provider mentioned above.

* Misc. TODO updates.

Revision 596 - (view) (download) - [select for diffs]
Modified Mon Nov 4 00:05:25 2002 UTC (21 years, 4 months ago) by pje
File length: 4740 byte(s)
Diff to previous 594 , to selected 1501
Made Model.Element Persistent.  There is still an unresolved issue relating
to mixing Persistent with other metaclasses under Python 2.2, however.  Be
wary of mixing Persistent with *any* PEAK class until it's fixed.  :(

Revision 594 - (view) (download) - [select for diffs]
Modified Sun Nov 3 20:05:58 2002 UTC (21 years, 4 months ago) by pje
File length: 4765 byte(s)
Diff to previous 593 , to selected 1501
Added error logging to basic txn error handler.  Fixed a couple of bugs
exposed by the newly added error logging.  :)  Reorganized TODO to better
reflect priority of remaining items, although it's not completely
prioritized yet.

Revision 593 - (view) (download) - [select for diffs]
Modified Sun Nov 3 19:47:29 2002 UTC (21 years, 4 months ago) by pje
File length: 4762 byte(s)
Diff to previous 592 , to selected 1501
Re-org/refactoring of many items from the TODO list for 0.5, including:

* moved peak.binding.imports -> peak.util.imports, added importSuite()

* Decided not to do binding.Acquire, it should just be a documented idiom

* Moved LDAP and lockfile URLs to peak.storage.LDAP and
  peak.running.lockfiles, respectively

* Moved factories.getObjectInstance -> spi, updated peak.ini to load
  naming.spi as the provider.

* Consolidated naming.references into naming.names

* Made ParsedURLs compile their pattern strings, and automatically make
  their 'fromX()' methods classmethods (and the same is true for other
  'struct' types.

* Refactored cursors and connections out into distinct SQLCursor/LDAPCursor
  types, based on a common AbstractCursor.

* Added TooManyResults/TooFewResults errors to peak.exceptions

Revision 592 - (view) (download) - [select for diffs]
Modified Sun Nov 3 15:50:21 2002 UTC (21 years, 4 months ago) by pje
File length: 5215 byte(s)
Diff to previous 590 , to selected 1501
Completed configuration files refactoring.  Configuration files now can
have [Load Settings From] and [Provide Utilities] sections, and property
sections can now define rules instead of just values.  Property values are
eval()'d at rule access time rather than configuration loading time, and
they have access to 'propertyMap', 'propertyName', and 'targetObj' locals,
as well as the full peak.api.* and config_components' globals.  "Load
Settings From" sections can access a potentially infinite variety of
sources for loading configuration data; the sources are defined using
the 'peak.config.loaders.*' property namespace, and thus can be
meta-configured even in the same configuration file.  Builtin loader types
are 'file' and 'mapping'.  GlobalConfig no longer has any hard-wired
configuration steps; everything is now in the peak.ini file.  Subclasses
of GlobalConfig need only perform 'self.config_filenames.append(fname)'
before calling GlobalConfig's 'setup()' method, to cause additional config
files to be loaded after 'peak.ini'.

Everything that is configurable in PEAK, is now (in principle) configurable
via property files.

Revision 590 - (view) (download) - [select for diffs]
Modified Sat Nov 2 00:48:37 2002 UTC (21 years, 5 months ago) by pje
File length: 5520 byte(s)
Diff to previous 588 , to selected 1501
Added more docs and a test to the FileParsing framework.  Refactored
AbstractConfigParser to make it easier to define how differently-processed
configuration sections will be handled.  Misc. TODO additions.

Revision 588 - (view) (download) - [select for diffs]
Modified Fri Nov 1 13:57:59 2002 UTC (21 years, 5 months ago) by pje
File length: 5348 byte(s)
Diff to previous 578 , to selected 1501
Added detailed plan of attack for 0.5 release.  It's getting closer...

Revision 578 - (view) (download) - [select for diffs]
Modified Wed Oct 30 21:28:50 2002 UTC (21 years, 5 months ago) by pje
File length: 3926 byte(s)
Diff to previous 378 , to selected 1501
A first pass at cleaning up the TODO file.  Also, removed the Specialist
class and associated interfaces altogether, since Racks can serve all the
same functions in PEAK.  (Perhaps Rack should be renamed to Specialist, but
that's a matter for future debate.)

Revision 378 - (view) (download) - [select for diffs]
Modified Sun Mar 31 22:20:56 2002 UTC (22 years ago) by pje
File length: 4855 byte(s)
Diff to previous 376 , to selected 1501
'setupModule()' and 'adviseModule()' will now issue warnings for most
questionable code structures and variable redefinitions that might not
work the way you'd expect or intend under module inheritance.

Revision 376 - (view) (download) - [select for diffs]
Modified Sun Mar 31 21:18:22 2002 UTC (22 years ago) by pje
File length: 4979 byte(s)
Diff to previous 374 , to selected 1501
Added tests and documentation for 'adviseModule()' API

Revision 374 - (view) (download) - [select for diffs]
Modified Sun Mar 31 20:27:05 2002 UTC (22 years ago) by pje
File length: 5021 byte(s)
Diff to previous 371 , to selected 1501
Added warnings for detectable module-level modifications of mutables
in modules which are used for inheritances or advice.  Added an API
function, 'configure(object, attr1=val, attr2=val,...)' to safely
set attributes of mutables that might have been defined in a derived
module.  Also, misc. updates to TODO.

Revision 371 - (view) (download) - [select for diffs]
Modified Sun Mar 31 16:37:42 2002 UTC (22 years ago) by pje
File length: 4882 byte(s)
Diff to previous 365 , to selected 1501
Improved key integrity checks in DataModel: Record objects now disallow
modification of key fields unless the old value is None, and cache
collisions between records with supposedly unique keys will result in an
AssertionError.  Also, made the requirement of an LDAPConnection object
more visible in Database.LDAPModel, and made misc. CHANGES/TODO updates.

Revision 365 - (view) (download) - [select for diffs]
Modified Wed Mar 27 23:34:39 2002 UTC (22 years ago) by pje
File length: 4599 byte(s)
Diff to previous 360 , to selected 1501
Fixed the "reference to rebound class within another class" problem with
module inheritance, as reported by (who else?) Ulrich Eck.  :)

Revision 360 - (view) (download) - [select for diffs]
Modified Sun Mar 24 18:22:08 2002 UTC (22 years ago) by pje
File length: 4453 byte(s)
Diff to previous 356 , to selected 1501
Added some notes on ideas for what might go into version 0.3.

Revision 356 - (view) (download) - [select for diffs]
Added Sat Mar 23 23:35:28 2002 UTC (22 years ago) by pje
File length: 4101 byte(s)
Diff to selected 1501
Moved TODO.txt out of the docs directory so HappyDoc will make an HTML file
for it in the reference docs.

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