Jason Gerard DeRose
7b571e3693
Enabled CRUDS in webUI using wehjit 0.2.0
2010-01-26 10:32:44 -05:00
John Dennis
dbb5721e7c
If plugin fails to load log the traceback
...
Signed-off-by: John Dennis <jdennis@redhat.com>
If plugin fails to load log the traceback
If a plugin fails to load due to some kind of error it would be nice
if the error log contained the traceback so you can examine what went
wrong rather than being left blind as to why it failed to load.
2009-11-23 16:30:01 -05:00
Rob Crittenden
50b683dc3c
Provide additional help to --help option
2009-11-19 14:38:01 -05:00
Jason Gerard DeRose
8dc21d6f30
Make plugin browser show plugin parent class
2009-10-14 15:08:30 -06:00
Jason Gerard DeRose
f58ff2921d
Giant webui patch take 2
2009-10-13 11:28:00 -06:00
Jason Gerard DeRose
c0f558d98b
Removed PluginProxy and all its uses
2009-08-05 12:18:51 -04:00
Pavel Zuna
c47d716e95
Modify PluginProxy to use __public__ defined in derived classes instead of base classes.
2009-06-10 11:53:07 -04:00
Pavel Zuna
7d0bd4b895
Rename errors2.py to errors.py. Modify all affected files.
2009-04-23 10:29:14 -04:00
Jason Gerard DeRose
4ab133c3cb
Implemented more elegant way for entire plugin module to be conditionally skipped; updated cert.py and ra.py modules to use this
2009-02-17 16:03:10 -05:00
Jason Gerard DeRose
a8c3f054d4
Started cleanup work on ra plugin; fixed problem in api.bootstrap() when process does not have permision to open log file
2009-02-17 16:03:08 -05:00
Jason Gerard DeRose
c2b0c80140
Started work on a much simplified mod_python server
2009-02-03 15:29:05 -05:00
Jason Gerard DeRose
231f0bd65a
Finished reworked cli.CLI class into cli.cli plugin
2009-02-03 15:29:04 -05:00
Jason Gerard DeRose
db0168f7af
Started reworking CLI class into cli plugin
2009-02-03 15:29:03 -05:00
Jason Gerard DeRose
0cfb0e191a
Removed the depreciated Context and LazyContext classes
2009-02-03 15:29:03 -05:00
Jason Gerard DeRose
6aadeb9aea
Added Object.params_minus() method; various small tweaks
2009-02-03 15:29:00 -05:00
Jason Gerard DeRose
6fe78a4944
Renamed all references to 'ipa_server' to 'ipaserver'
2009-01-04 18:39:39 -07:00
Jason Gerard DeRose
912ab9e68b
Removed unneeded import of errors from plugable.py
2009-01-03 18:08:39 -07:00
Jason Gerard DeRose
bb6e9cfe9f
Plugin.call() now uses errors2 version of SubprocessError
2009-01-03 18:02:58 -07:00
Jason Gerard DeRose
6b6e6b1cab
Ported plugin registration errors into errors2.py; plugable.Registrar now raises new errors2 exceptions
2009-01-03 17:27:53 -07:00
Jason Gerard DeRose
72340a594d
Removed unneeded import of check_type, check_instance in plugable.py
2009-01-02 01:16:17 -07:00
Jason Gerard DeRose
b4dc333ee2
Removed depreciated code in ipalib.plugable that has been moving into ipalib.base
2009-01-02 00:46:45 -07:00
Jason Gerard DeRose
5b637f6a18
Removed depreciated code from config.py; removed corresponding unit tests
2008-12-22 15:41:24 -07:00
Jason Gerard DeRose
f82c48f775
Added note in Plugin.set_api() about Plugin.log attribute being depreciated
2008-12-21 19:58:48 -07:00
Jason Gerard DeRose
9d091c98f1
Plugin.__init__() now checks that subclass hasn't defined attributes that conflict with the logger methods; added corresponding unit test
2008-12-21 19:34:32 -07:00
Jason Gerard DeRose
4390523b7f
Improved Plugin.call() method and added its unit test
2008-12-21 17:12:00 -07:00
Jason Gerard DeRose
4f24f0fd88
Plugin.doc instance attribute is now parsed out using inspect.getdoc(); added Plugin.summary instance attribute, created in Plugin.__init__()
2008-12-17 23:08:52 -07:00
Jason Gerard DeRose
171ed58367
Removed Plugin.doc property and replaced with instance attribute created in Plugin.__init__()
2008-12-17 21:57:58 -07:00
Jason Gerard DeRose
69041c3b1b
Removed Plugin.name property and replaced with instance attribute created in Plugin.__init__()
2008-12-17 21:47:43 -07:00
Jason Gerard DeRose
2db738e899
Some changes to make reading dubugging output easier
2008-11-24 10:09:30 -07:00
Jason Gerard DeRose
c26a3c8542
Finished fist draft of plugin tutorial in ipalib/__init__.py docstring
2008-11-07 02:26:38 -07:00
Jason Gerard DeRose
5bdf860647
Added Plugin.call() method that calls an external executable via subprocess.call()
2008-11-06 11:57:21 -07:00
Jason Gerard DeRose
242a8183a7
Added custom log formatter util.LogFormatter that makes the human-readable time stamp in UTC
2008-10-31 20:25:33 -06:00
Jason Gerard DeRose
5e5a83e4e8
Renamed API.bootstrap_from_options() to bootstrap_with_global_options()
2008-10-31 19:03:07 -06:00
Jason Gerard DeRose
5269d1396c
Logging formats are now env variables; added log_format_stderr_debug format used when env.debug is True
2008-10-31 18:55:32 -06:00
Jason Gerard DeRose
a23d41a57f
Reoganized global option functionality to it is easy for any script to use the environment-related global options; lite-xmlrpc.py now uses same global options
2008-10-31 18:17:08 -06:00
Jason Gerard DeRose
cdfb7bfd5e
Logging is now configured in API.bootstrap(); removed depreciated util.configure_logging() function
2008-10-31 13:27:42 -06:00
Jason Gerard DeRose
140458cfc6
API.finalize() now cascades call to API.load_plugins()
2008-10-31 12:29:59 -06:00
Jason Gerard DeRose
3076cb4d2f
Plugin.set_api() now sets convience instance attributes from api for env, context, log, and all NameSpace
2008-10-30 14:11:24 -06:00
Jason Gerard DeRose
6879140db7
Added ipalib.plugins.f_misc with new 'context' Command; moved 'env' Command from cli to f_misc
2008-10-30 02:20:28 -06:00
Jason Gerard DeRose
ddb5449c7f
Did some initial work for Context plugins
2008-10-30 01:11:33 -06:00
Jason Gerard DeRose
fbcb55bd11
lite-xmlrpc.py now uses api.bootstrap() property, logs to api.logger
2008-10-28 02:10:56 -06:00
Jason Gerard DeRose
316bd855d5
Added util.configure_logging() function; API.bootstrap() now calls util.configure_logging()
2008-10-28 01:39:02 -06:00
Jason Gerard DeRose
83d6c95e46
API.load_plugins() no longer takes dry_run=False kwarg and instead checks in env.mode == 'unit_test' to decide whether to load the plugins; it also only loads ipa_server.plugins in env.in_server is True
2008-10-27 23:39:43 -06:00
Jason Gerard DeRose
bb9691099b
API.bootstrap() now calls Env._finalize_core(); updated unit tests
2008-10-27 15:36:41 -06:00
Jason Gerard DeRose
e6254026fe
Implemented basic CLI.bootstrap(); added corresponding unit tests
2008-10-27 15:19:49 -06:00
Jason Gerard DeRose
d76202fea3
API.env is now an Env instance rather than an Environment instance
2008-10-27 01:35:40 -06:00
Jason Gerard DeRose
03accc5fb3
Copied plugin loading function from load_plugins.py to util.py; API.load_plugins() method now calls functions in util
2008-10-27 00:23:43 -06:00
Jason Gerard DeRose
4fe03f5e17
Added API.load_plugins() place-holder, which cascades call to API.bootstrap()
2008-10-26 23:53:44 -06:00
Jason Gerard DeRose
6b8abb0d78
Implemented placeholder API.bootstrap() method; added API __doing(), __do_if_not_done(), isdone() methods borrowed from Env; API.finalize() now cascades call to API.bootstrap()
2008-10-26 23:28:06 -06:00
Jason Gerard DeRose
5e0a0fa745
In second example in NameSpace docstring, renamed 'member' class to 'Member' to make the example clearer
2008-10-21 08:47:08 -06:00
Jason Gerard DeRose
77a378bd61
Some PEP-257 and reStructuredText cleanup in plugable.py
2008-10-18 01:02:31 -06:00
Jason Gerard DeRose
f1eb74e22c
make-test now runs doctests also; fixed several broken doctests
2008-10-17 20:50:34 -06:00
Martin Nagy
3a80297b04
Reworking Environment, moved it to config.py
2008-10-17 23:11:51 +02:00
Jason Gerard DeRose
20fa90cfb6
Some small cleanup on Environment, filled in docstrings
2008-10-14 00:39:23 -06:00
Rob Crittenden
75bad44c27
Enable the verbose flag to pass thru xmlrpc
2008-10-10 05:23:00 -04:00
Martin Nagy
149429f305
Environment is now subclassed from object, rather then dict. Added tests for Environment and config.py
2008-10-02 17:22:41 -06:00
Martin Nagy
afdc721038
Add support for environment variables, change tests accordingly
2008-09-29 17:45:14 -06:00
Jason Gerard DeRose
023f612921
361: Implemented crud.Add.get_options() method; added corresponding unit tests
2008-09-25 02:13:16 +00:00
Jason Gerard DeRose
f531f7da81
354: Added NameSpace.__todict__() method that returns copy of NameSpace.__map; updated NameSpace unit test to also test __todict__()
2008-09-24 23:49:44 +00:00
Jason Gerard DeRose
3e70c3b56b
325: API.finalize() now creates instance attribtue 'plugins', which is a tuple of PluginInfo objects; renamed show_plugins cli command to namespaces; added new cli command plugins
2008-09-24 04:44:52 +00:00
Jason Gerard DeRose
19bbc48eb6
323: Added Command.run() method that dispatches to execute() or forward(); added corresponding unit tests
2008-09-24 02:52:19 +00:00
Jason Gerard DeRose
f3aaf65f1c
320: plugable.API now respects the Plugin.__proxy__ flag; added test for plugins without proxy to unit tests for API
2008-09-24 00:44:41 +00:00
Jason Gerard DeRose
b206ef6843
314: Completed some missing features in Command.__call__(); removed depreciated Command.print_call() method
2008-09-22 01:28:57 +00:00
Jason Gerard DeRose
f73d976bda
307: Split Plugin.finalize() into two steps 1) Plugin.set_api() and 2) Plugin.finalize(); updated unit tests
2008-09-21 21:50:56 +00:00
Jason Gerard DeRose
5872221bd4
306: Added Plugin.set_api() method; added corresponding unit tests
2008-09-21 21:30:19 +00:00
Jason Gerard DeRose
ef0d7a71ab
299: Cleaned up unit tests for ReadOnly class
2008-09-18 22:39:48 +00:00
Jason Gerard DeRose
81ebe078be
298: Cleaned up docstrings in ReadOnly methods
2008-09-18 22:01:04 +00:00
Jason Gerard DeRose
e524c826db
297: Added a better example in docstring for ReadOnly
2008-09-18 21:45:25 +00:00
Jason Gerard DeRose
14eb96493b
296: Added more to docstrings for NameSpace.__iter_() and NameSpace.__call__()
2008-09-18 21:23:05 +00:00
Jason Gerard DeRose
84a721d408
294: NameSpace no longer subclasses from DictProxy; NameSpace.__getitem__() now works with int and slice objects
2008-09-18 20:35:23 +00:00
Jason Gerard DeRose
0453aa465f
274: NameSpace.__init__() now takes sort=True keyword arument to allow for non-sorted NameSpaces; updated and improved NameSpace unit tests
2008-09-09 23:10:49 +00:00
Jason Gerard DeRose
13f030d91e
271: Improved __repr__ methods for better output from the show-plugins command
2008-09-08 21:51:05 +00:00
Jason Gerard DeRose
e74713a076
267: Finished builtin CLI api command
2008-09-08 21:37:02 +00:00
Jason Gerard DeRose
8b7fe7139d
228: plugable.check_name() now uses errors.check_type()
2008-09-02 17:29:01 +00:00
Jason Gerard DeRose
ab10f0843b
179: DictProxy now has __call__() method that iterates through the values; removed __call__() method from NameSpace as it subclasses from DictProxys; DictProxy unit tests now test __call__()
2008-08-15 05:19:02 +00:00
Jason Gerard DeRose
a24f2121d5
178: Registrar now subclasses from DictProxy; made Registrar.__iter__ behave same as the other container emulation in plugable.py, and made the dictorary interface return the base and the attribute interface return the MagicDict; updated API class and unit tests
2008-08-15 05:07:17 +00:00
Jason Gerard DeRose
5ed58fdb42
177: Docstring cleanup in NameSpace.__call__()
2008-08-15 03:45:07 +00:00
Jason Gerard DeRose
db8099febc
176: PluginProxy now subclasses from SetProxy
2008-08-15 03:41:17 +00:00
Jason Gerard DeRose
233293fb4a
175: Renamed Proxy to PluginProxy
2008-08-15 03:32:38 +00:00
Jason Gerard DeRose
ec0596b429
174: Fleshed out docstrings for SetProxy, DictProxy, and MagicDict
2008-08-15 03:24:37 +00:00
Jason Gerard DeRose
3e3b596f68
173: NameSpace now subclasses from DictProxy
2008-08-15 01:46:11 +00:00
Jason Gerard DeRose
1a92bdf29b
172: API now subclasses from DictProxy
2008-08-15 01:32:20 +00:00
Jason Gerard DeRose
e43a5c642e
171: MagicDict now subclasses from DictProxy; updated unit tests
2008-08-15 01:24:51 +00:00
Jason Gerard DeRose
f6c2181eeb
170: Added SetProxy and DictProxy classes to plugable so container emulation can be consolidated
2008-08-15 01:04:19 +00:00
Jason Gerard DeRose
88a5b3ae25
169: Renamed DictProxy to MagicDict
2008-08-14 23:49:36 +00:00
Jason Gerard DeRose
07cd537277
168: plugable.API now implements the all the usual container methods
2008-08-14 22:13:42 +00:00
Jason Gerard DeRose
5f38daf6de
167: In API.finalize(), lock(plugin) is used instead of plugin.__lock__(); more docstring improvements in plugable.py
2008-08-14 21:40:37 +00:00
Jason Gerard DeRose
d229a76474
165: Added unit tests for plugable.lock() function; replaced occurances of 'self.__lock__()' with 'lock(self)' in plugable.py
2008-08-14 20:32:35 +00:00
Jason Gerard DeRose
43c04f1cd3
163: Docstring improvement for ipalib/__init__.py and plugable.py
2008-08-14 19:36:54 +00:00
Jason Gerard DeRose
f423f2c9f0
162: Added link to container emulation documentation in plugable.py docstring
2008-08-14 18:59:12 +00:00
Jason Gerard DeRose
7c64c8b954
161: Registrar now takes advantage of DictProxy; updated corresponding unit tests
2008-08-14 18:50:21 +00:00
Jason Gerard DeRose
87cad5078a
160: DictProxy now checks type of d in __init__(); updated unit tests
2008-08-14 17:29:13 +00:00
Jason Gerard DeRose
b403fd822b
159: Added plugable.DictProxy class; added corresponding unit tests; added setitem(), delitem() functions to tstutil
2008-08-14 17:21:21 +00:00
Jason Gerard DeRose
ca53615ddd
158: Name local arg 'cls' to 'klass' in Registrar methods to avoid confusion with classmethods; some docstring improvement in Registrar
2008-08-14 09:38:28 +00:00
Jason Gerard DeRose
a3dc04ade4
157: More docstring cleanup; fixed remaining epydoc warnings
2008-08-14 09:01:02 +00:00
Jason Gerard DeRose
f0dfb9f873
156: Fixed all broken docstring cross references
2008-08-14 08:28:48 +00:00
Jason Gerard DeRose
8c27f4c2de
155: More docstring cleanup in plugable.py
2008-08-14 07:43:43 +00:00
Jason Gerard DeRose
00f4272662
154: Merged ProxyTarget functionality into Plugin to make things a bit clearer
2008-08-14 07:10:07 +00:00
Jason Gerard DeRose
a59d6698d2
153: Started cleaning up docstrings in Proxy and also experimented with restructuredtext formatting
2008-08-14 06:53:05 +00:00
Jason Gerard DeRose
ba8d32a110
150: NameSpace.__iter__() now iterates through the names, not the members; added NameSpace.__call__() method which iterates through the members; NameSpace no longer requires members to be Proxy instances; updated unit tests and affected code; cleaned up NameSpace docstrings and switch to epydoc param docstrings
2008-08-14 05:46:20 +00:00
Jason Gerard DeRose
0fed74b56d
138: Added ProxyTarget.doc property; CLI.print_commands() now uses cmd.doc instead of cmd.get_doc()
2008-08-13 02:34:36 +00:00
Jason Gerard DeRose
70cbe10624
124: Fixed case in example in ReadOnly class docstring
2008-08-12 23:45:36 +00:00
Jason Gerard DeRose
7db3aae1b2
123: API.finalize() now raises AssetionError if called more than once; added corresponding unit tests
2008-08-12 23:40:36 +00:00
Jason Gerard DeRose
b72cfa5dcc
121: Renamed API.__call__() method to API.finalize()
2008-08-12 22:52:37 +00:00
Jason Gerard DeRose
f767543fe7
120: Moved ProxyTarget below Proxy to emphasize relationship with Plugin; added docstrings for ProxyTarget.implements() and implemented_by() classmethods; fixed typo in Plugin.finalize() docstring
2008-08-12 22:40:06 +00:00
Jason Gerard DeRose
8640523632
119: Added ProxyTarget.implemented_by() classmethod; added corresponding unit tests
2008-08-12 21:45:54 +00:00
Jason Gerard DeRose
d7958f3fde
103: Fixed missing API.__keys assignment
2008-08-09 19:48:47 +00:00
Jason Gerard DeRose
0edb22c9ac
102: After the API instance calls plugin.finalize(), it also calls plugin.__lock__()
2008-08-09 19:39:58 +00:00
Jason Gerard DeRose
543aea31a4
101: Registrar now subclasses from ReadOnly
2008-08-09 19:33:13 +00:00
Jason Gerard DeRose
0e532cd7b3
100: Cleaned up NameSpace docstrings; cleanup up NameSpace unit tests
2008-08-09 19:28:01 +00:00
Jason Gerard DeRose
e756e12718
99: Cleaned up unit tests for plugable.Plugin
2008-08-09 19:09:10 +00:00
Jason Gerard DeRose
5315514f6c
98: Completed docstrings in Proxy
2008-08-09 18:58:46 +00:00
Jason Gerard DeRose
9712eae51c
97: Some whitespace and docstring cleanup; Plugin now subclasses from ProxyTarget
2008-08-09 05:19:40 +00:00
Jason Gerard DeRose
409f688ef5
96: Fixed typo is ReadOnly docstring
2008-08-09 04:37:37 +00:00
Jason Gerard DeRose
72f3132d2b
95: Improved docstrings for ReadOnly class; added ReadOnly.__islocked__() method; added corresponding unit tests
2008-08-09 04:35:06 +00:00
Jason Gerard DeRose
3495c67d57
94: Renamed Proxy._clone() method to Proxy.__clone__(); updated unit tests
2008-08-09 01:46:12 +00:00
Jason Gerard DeRose
cc5b017494
93: Added Proxy.implements() method; addeded corresponding unit tests
2008-08-09 01:06:42 +00:00
Jason Gerard DeRose
45201e31c1
92: Added ProxyTarget.name property; added corresponding unit tests
2008-08-08 23:26:17 +00:00
Jason Gerard DeRose
e3811f3f45
91: Fleshed out docstrings in plugable.Proxy
2008-08-08 23:07:22 +00:00
Jason Gerard DeRose
5a1223e943
90: Renamed plugable.Abstract to ProxyTarget, which now subclasses from ReadOnly; updated unit tests
2008-08-08 22:45:09 +00:00
Jason Gerard DeRose
1744723d11
88: Renamed ReadOnly._lock() to ReadOnly.__lock__(); updated subclasses and unit tests
2008-08-08 21:49:09 +00:00
Jason Gerard DeRose
3fe13d5945
87: Moved to_cli(), from_cli() functions from plugable.py into new cli.py file; moved corresponding unit tests into new test_cli.py file
2008-08-08 21:46:23 +00:00
Jason Gerard DeRose
fdfa827a36
86: Actually change *all* tab indentation to 4-space: 'sed s/\t/ /g'
2008-08-08 21:40:03 +00:00
Jason Gerard DeRose
58a3b1d091
85: Added ReadOnly._lock() method to make class easier to use; updated subclasses and unit tests
2008-08-08 21:28:56 +00:00
Jason Gerard DeRose
6dc60a18c7
84: Renamed Proxy.__public to Proxy.__public__ so it works with Abstract.implements()
2008-08-08 20:55:08 +00:00
Jason Gerard DeRose
d171dc9011
82: Cleaned up unit tests for public.option; added some doodles in plugable.Base
2008-08-08 19:53:45 +00:00
Jason Gerard DeRose
8e46824815
81: Switch from tab to 4-space indentation
2008-08-08 17:11:29 +00:00
Jason Gerard DeRose
f904cb0422
71: Proxy now uses base.__public__ instead of base.public; updated unit tests
2008-08-07 00:51:34 +00:00
Jason Gerard DeRose
778a019129
70: Plugin.__repr__ now again returns 'module_name.class_name()' form; updated unit test
2008-08-07 00:35:51 +00:00
Jason Gerard DeRose
19dbd57141
69: Made Proxy.base a private attribute; updated unit tests
2008-08-07 00:21:50 +00:00
Jason Gerard DeRose
7335af8a9e
68: Ported to changes in NameSpace, Proxy; updated unit tests
2008-08-07 00:14:38 +00:00
Jason Gerard DeRose
03bad04e7b
67: Deleted NameSpace, Proxy; renamed NameSpace2, Proxy2 to NameSpace, Proxy
2008-08-06 23:22:29 +00:00
Jason Gerard DeRose
e63453a858
66: Added NameSpace2 (bit simpler than NameSpace, better suited to Proxy2); added corresponding unit tests
2008-08-06 22:59:50 +00:00
Jason Gerard DeRose
f13f1226b4
65: Finished simplified Proxy2 class; updated unit tests
2008-08-06 21:54:56 +00:00
Jason Gerard DeRose
0c7769473c
64: Almost finish with Proxy2, where base class is passed to __init__ and methods use @export decorator; added corresponding unit tests
2008-08-06 20:38:07 +00:00
Jason Gerard DeRose
495f96a73f
62: NameSpace no longer takes base=base kwarg
2008-08-06 15:06:39 +00:00
Jason Gerard DeRose
4e825ba2d9
61: Proxy now does a setattr for all callable attributes in __slots__ (and uses __getattr__ for rest
2008-08-06 14:59:54 +00:00
Jason Gerard DeRose
62d2cd65f2
59: Removed NameSpace.__call__ method (returned max_len)
2008-08-06 14:27:33 +00:00
Jason Gerard DeRose
2081987186
58: A bit of docstring cleanup in plugable.py
2008-08-06 14:22:38 +00:00
Jason Gerard DeRose
e618d99bc7
57: to_cli() function no longer replaces '__' with '.'; from_cli() function no longer replaces '.' with '__'; updated unit tests
2008-08-06 03:58:15 +00:00
Jason Gerard DeRose
8865f516df
56: Fixed Proxy.__call__
2008-08-06 03:51:33 +00:00
Jason Gerard DeRose
277685439c
55: Cleaned up print_api() function in ipa script
2008-08-06 03:27:00 +00:00
Jason Gerard DeRose
c6f69e1c66
54: Added plugable.Proxy._clone() method; fleshed out public.obj; updated unit tests; port ipa script
2008-08-06 02:00:18 +00:00
Jason Gerard DeRose
f31f7813fe
53: Changed plugable.Registar so the same plugin can be added to in the ns for more than one base (for cmd and mthd)
2008-08-05 23:34:59 +00:00
Jason Gerard DeRose
159207514f
52: Got cli working against new framework
2008-08-05 22:21:57 +00:00
Jason Gerard DeRose
56fa454fdd
47: Added plugable.check_identifier() function; added corresponding unit tests
2008-08-05 06:33:09 +00:00
Jason Gerard DeRose
d134b48306
46: plugable.API now takes allowed base class in __init__ and creates Registrar at API.register, thereby coupling the two; updated correspending unit tests
2008-08-05 05:12:09 +00:00
Jason Gerard DeRose
2b3c2238f6
45: Fixed docstring typo in plugable.__doc__
2008-08-05 04:40:44 +00:00
Jason Gerard DeRose
42c53b2a53
44: Added Plugin.finalize() method called by API after all plugin instances are created; updated corresponding unit tests
2008-08-05 04:24:19 +00:00
Jason Gerard DeRose
c3bf5ad857
43: Fleshed out new plugable.API class; added corresponding unit tests
2008-08-05 03:21:52 +00:00