forked from datafolklabs/cement
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
executable file
·422 lines (311 loc) · 16.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
.. _changelog:
ChangeLog
==============================================================================
All bugs/feature details can be found at:
https://github.com/datafolklabs/cement/issues/XXXXX
Where XXXXX is the 'Issue #' referenced below. Additionally, this change log
is available online at:
http://builtoncement.com/2.5/changes/
See the :ref:`upgrading` section for more information related to
any incompatible changes, and how to update your application to fix them.
2.5.1 - DEVELOPMENT (will be released as 2.5.2/dev or 2.6.0/stable)
------------------------------------------------------------------------------
This is a branch off of the 2.4.x stable code base. Maintenance releases for
2.4.x will happen under the stable/2.4.x git branch, while forward feature
development will happen as 2.5.x under the git master branch.
Bugs:
* None
Features:
* :issue:`281` - Added support for Python `with` operation
2.4.0 - Wed Sep 17, 2014
------------------------------------------------------------------------------
Bugs:
* :issue:`211` - LoggingLogHandler namespace causes issues (regression)
* :issue:`235` - Duplicate Config Section when plugin already loaded
* :issue:`246` - Plugin extension does not disable after already being
enabled
Features:
* :issue:`119` - Added cement.utils.shell.Prompt to quickly gather user
input in several different ways.
* :issue:`182` - Added a mail interface with basic implementations of
'dummy' (just prints message to console) and 'smtp'
* :issue:`229` - Ability to override handlers via command line options.
Also related: :issue:`225`.
* :issue:`248` - Added documentation for BASH Auto-Completion example.
* :issue:`249` - Allow utils.shell.exec_cmd* to accept additional.
parameters, passing all `args` and `kwargs` down to subprocess.Popen.
Allows features such as changing the current working directory, and
setting a timeout value, etc (everything that Popen supports).
* :issue:`257` - CementBaseController._dispatch() should return result
of controller function.
* :issue:`259` - Add yaml and yaml_configobj config handlers.
* :issue:`262` - Add json and json_configobj config handlers.
* :issue:`267` - Add support for multiple `plugin_dirs` and
`plugin_config_dirs`
* :issue:`269` - Allow app.close() to accept an exit code, and exit with
that code.
* :issue:`270` - Add support for multiple template_dirs
* :issue:`274` - Add cement.core.interface.list function
* :issue:`275` - Added `examples/` directory with working examples based
on Examples section of the documentation.
Incompatible:
* :issue:`227` - Standardize handler config section naming conventions.
All handler config sections are now labeled after ``interface.handler``
(i.e. ``output.json``, or ``mail.sendgrid``, etc).
* :issue:`229` - Handler override options deprecate the use of ``--json``,
and ``--yaml`` output handler options.
* :issue:`260` - Extensions/Plugins/Bootstrap modules must accept `app`
argument in `load()` function. See Upgrading doc for more information.
2.2.0 - Wed Jan 29, 2014
------------------------------------------------------------------------------
Bugs:
* :issue:`211` - LoggingLogHandler namespace causes issues
* :issue:`215` - Epilog not printed on --help
Features:
* :issue:`209` - Added app.debug property to allow developers to know if
`--debug` was passed at command line of via the config
* :issue:`219` - Merged ext.memcached into mainline
* :issue:`222` - Merged ext.configobj into mainline
* :issue:`223` - Merged ext.genshi into mainline
* :issue:`224` - Merged ext.yaml into mainline
Incompatible:
* :issue:`202` - Deprecated namespace packaging for cement and cement.ext.
Resolves issues with certain IDE's and other situations where the lack
of a proper ``__init__.py`` causes issues. This change means that
external extensions can no longer share the ``cement.ext`` module
namespace, and must have it's own unique module path.
Misc:
* Official Git repo relocated to: http://github.com/datafolklabs/cement
2.1.4 - Tue Oct 29, 2013
------------------------------------------------------------------------------
Bugs:
* :issue:`191` - KeyError when using minimal logger with --debug
* :issue:`199` - Moved post_argument_parsing hook down, after
arguments_override_config logic happens.
* :issue:`204` - utils.misc.wrap should handle None type
* :issue:`208` - LoggingLogHandler does not honor Meta.config_section
Features:
* :issue:`190` - Merged daemon extension into core
* :issue:`194` - Added pre_argument_parsing/post_argument_parsing hooks
* :issue:`196` - Added utils.misc.wrap
* :issue:`200` - Merged ext.mustache into mainline.
* :issue:`203` - Added support for external template directory
* :issue:`207` - Added support for alternative 'display' name for stacked
controllers
Incompatible:
* :issue:`163` - LoggingLogHandler.Meta.clear_loggers was changed from a
boolean option, to a list. Additionally,
LoggingLogHandler.clear_loggers() now requires a `namespace` argument.
ILog interface no longer defines `clear_loggers()` as a required
function (though ILog interfaces are welcome to implement one if
necessary).
* :issue:`173` - Deprecated 'has_key()' from configparser extension
* :issue:`201` - Add Deprecation Warning for CementApp.get_last_rendered()
2.1.2 - Thu Nov 1st, 2012
------------------------------------------------------------------------------
This is a branch off of the 2.0.x stable code base. Maintenance releases for
2.0.x will happen under the stable/2.0.x git branch, while forward feature
development will happen here under as 2.1.x under the git master branch.
Bugs:
* :issue:`162` - Unable to set log 'level' by config
* :issue:`167` - Non-stacked controllers not listed in --help
* :issue:`169` - Fixed tests.utils.shell_tests timeout issue
* :issue:`171` - No handlers could be found for logger
* :issue:`183` - os.environ['HOME'] does not exist on Windows
Features:
* :issue:`161` - Ability to override `usage`
* :issue:`164` - Store previously rendered data as app._last_rendered, and
retrievable by app.get_last_rendered().
* :issue:`165` - Allow utils.fs.backup() to support a suffix kwarg
* :issue:`166` - Ability to set the 'app' for CementTestCase.make_app()
* :issue:`170` - Added support for `nested` and `embedded` controllers.
Misc:
* :issue:`172` - 100% PEP8 Compliant
* :issue:`160` - Refactor CementApp._resolve_handler() as
handler.resolve()
Deprecation Notices:
* :issue:`173` - ConfigParserConfigHandler.has_key() is now deprecated,
and will be removed in future versions. Please use `if key in
app.config.keys(section)` instead.
Incompatible Changes:
* :issue:`141` - Removed shortcuts from CementBaseController (such as
log, pargs, etc). Use `self.app.<shortcut>` instead.
* :issue:`167` - Listed above, in order to fix this issue as well as
restrict future issues we implemented a hard requirement that all
base controllers have the label 'base'. This should not be a major
change for anyone using Cement 2.0.x as it is a simple 1 line change
in any one application. As all documentation encourages the use of the
label 'base' it should not be a wide spread incompatibility.
* :issue:`179` - CementBaseController `hidden`, `visible`, and `exposed`
have been removed, and replaced by other private means of managing
the dispatch of commands.
* CementBaseController no longer implements a `default` command.
* :issue:`177` - Renamed several cement.core.backend pieces including:
`handlers` -> `__handlers__`, `hooks` -> `__hooks__`, `SAVED_STDOUT`
-> `__saved_stdout__`, and `SAVED_STDERR` -> `__saved_stderr__`.
* :issue:`178` - Moved `backend.defaults()` to
`utils.misc.init_defaults()`, and `backend.minimal_logger()` to
`utils.misc.minimal_logger()`
2.0.0 - Fri Aug 03, 2012
------------------------------------------------------------------------------
This is the initial stable release of the 2.0.x branch. Future releases of
this branch will include bug/security fixes and minor feature updates.
Forward moving feature development will continue out of the 2.1.x branch.
Bugs:
* :issue:`143` - Incorrect doc regarding logging. The LoggingLogHandler
now supports an optional 'namespace' argument allowing the developer
to override the log prefix.
* :issue:`150` - foundation.CementApp.Meta.argv now defaults to None,
but is overridden in __init__() with sys.argv if no other argv is
passed as meta.
Features:
* :issue:`138` - Added 'shell' argument to utils.shell.exec_cmd() and
utils.shell.exec_cmd2().
* :issue:`140` - Included ~/.myapp/config in default config search
* :issue:`144` - Added a note on Contributing, as well as a CONTRIBUTORS
file.
* :issue:`152` - Added 'argument_formatter' to ControllerBaseClass.Meta.
* :issue:`153` - Added spawn_process() and spawn_thread() to utils.shell.
Incompatible Changes:
* :issue:`100` - Interfaces audit.
* ILog.level() redefined as ILog.get_level()
* IPlugin.loaded_plugins attribute redefined as
IPlugin.get_loaded_plugins()
* IPlugin.enable_plugins attribute redefined as
IPlugin.get_enabled_plugins()
* IPlugin.disabled_plugins attribute redefined as
IPlugin.get_disabled_plugins()
* :issue:`145` - The IArgument interface no longer specifies that the
`parsed_args` be maintained by the handler implementation. This means
that `app.args.parsed_args` is no longer available, however
`app.pargs` functions just the same as it points to
`app._parsed_args`.
* :issue:`148` - The CementExtensionHandler.loaded_extensions property is
now a callable at CementExtensionHandler.get_loaded_extensions().
* :issue:`151` - Removed all previously deprecated code including:
* Removed CementApp.Meta.defaults, and CementBaseHandler.Meta.defaults.
Now use `config_defaults` instead.
* Removed cement.foundation.lay_cement(). Now use CementApp directly.
* Removed cement.handler.enabled(). Now use `handler.registered()`
instead.
* :issue:`154` - Validate for handler config_defaults and config_section
by default. Only incompatible if not previously sub-classing from
handler.CementBaseHandler.
* :issue:`157` - CementRuntimeError renamed as FrameworkError
* :issue:`158` - CementSignalError renamed as CaughtSignal
* :issue:`159` - CementInterfaceError renamed as InterfaceError
Misc:
* :issue:`155` - Removed unused CementArgumentError, and
CementConfigError. These types of exceptions should be defined at
the application level.
1.9.14 - Sun Jul 16, 2012
------------------------------------------------------------------------------
Bugs:
* :issue:`127` - Inherited positional arguments listed multiple times
Feature Enhancements:
* :issue:`131` - Controller aliases
* :issue:`126` - Add a 'bootstrap' importer to CementApp
* Added cement.utils.test.CementTestCase for improved testing.
Incompatible Changes:
* :issue:`129` - Simplify extensions/plugins/hooks/etc.
* Hooks renamed from 'cement_xxx_hook' to just 'xxx'. For example, the
'cement_pre_setup_hook' is now simply 'pre_setup'. Additionally, the
'cement_on_close_hook' is now broken out into 'pre_close', and
'post_close'.
* The cement.core.hooks.register decorator was replaced with a simple
function of the same name. New usage is:
register('hook_name', hook_func).
* Plugins, extensions, and the application bootstrap now attempt to
call a 'load()' function, meaning library code and loading code can
live in the same file (i.e. hooks won't be registered just because
you imported an extension to sub-class a handler, etc).
* cement.utils.test_helper moved to cement.utils.test.
* By default, command line arguments no longer override config settings.
This is now configurable by the CementApp.Meta.arguments_override_config
boolean. Related: :issue:`136`.
1.9.12 - Thu Jul 05, 2012
------------------------------------------------------------------------------
Bugs:
* Fixed version mis-hap in setup.py
1.9.10 - Wed Jul 04, 2012
------------------------------------------------------------------------------
Feature Enhancements:
* :issue:`118` - Added utils.fs.backup() to safely backup files/dirs.
Misc:
* :issue:`111` - Use relative imports (makes cement more portable as it
can be included and distributed with 3rd party sources).
* :issue:`120` - Use standard json rather than relying on jsonpickle
Incompatible Changes:
* core.util.abspath moved to utils.fs.abspath
* core.util.is_true moved to utils.misc.is_true
* Namespace reverted from 'cement2' back to 'cement'.
* The following extensions have been removed from the cement source tree,
and are now available externally (see: http://github.com/cement): daemon,
memcached, configobj, yaml, genshi.
1.9.8 - Thu May 3, 2012
------------------------------------------------------------------------------
Feature Enhancements:
* :issue:`95` - Add a 'config_section' Meta default for all handlers.
Required to parse config options for a handler.
* :issue:`97` - Add a standard cache handler interface.
* :issue:`105` - Add 'meta_override' and 'core_meta_override' list to
CementApp().Meta. Also resolves :issue:`104`.
* :issue:`108` - Add CementApp.extend() functionality.
* :issue:`109` - Add cement.ext.memcached extension
Incompatible Changes:
* :issue:`103` - plugin_bootstrap_module renamed as plugin_bootstrap.
* :issue:`106` - Deprecate Meta.defaults in favor of Meta.config_defaults
* :issue:`107` - Make the app name the default config section, not [base]
1.9.6 - Wed Apr 18, 2012
------------------------------------------------------------------------------
Bug Fixes:
* :issue:`89` - Secondary controllers display under other controllers
* :issue:`90` - Logging to file doesn't expand '~'
* :issue:`91` - Logging to file doesn't create basedir
Feature Enhancements:
* :issue:`88` - Add cement.ext.genshi extension, provides Genshi Text
Templating Launguage support.
* :issue:`93` - Add epilog support for CementBaseController.
Refactoring:
* :issue:`87` - Refactor Meta handling
Incompatible Changes:
* :issue:`96` - Move 'setup()' functions to '_setup()'
* Moved CementBaseController.dispatch() to _dispatch()
* Moved CementBaseController.usage_text to _usage_text()
* Moved CementBaseController.help_text to _help_text()
* backend.defaults() no longer accepts an app name as an argument.
* foundation.lay_cement() is deprecated. Use foundation.CementApp()
directly.
* No longer pass anything but 'app' object to handlers _setup() functions.
* handler.enabled() is deprecated. Use handler.registered().
1.9.4 - Wed Dec 21, 2011
------------------------------------------------------------------------------
Bug Fixes:
* :issue:`73` - Hooks broken in Python 3
* :issue:`81` - Controller defaults should be processed before base
controller.setup()
Feature Enhancements:
* :issue:`65` - Added 'daemon' extension. Process is daemonized by
passing the '--daemon' option. Handles switching the run user/group, as
well as managing a pid file.
* :issue:`72` - Added new framework hooks.
* :issue:`76` - Added app.close() functionality including a
cement_on_close_hook() allowing plugins/extensions/etc to be able to
cleanup on application exit.
* :issue:`77` - Added default signal handler for SIGINT/SIGTERM as well as
the cement_signal_hook which is called when any catch_signals are
encountered.
* :issue:`78` - Added cement_pre_render_hook, and cement_post_render_hook
allowing developers to control the data that is rendered to console.
* :issue:`84` - Ability to run all tests from utils/run_tests.sh
Incompatible Changes:
* :issue:`72` - The framework hooks 'cement_add_args_hook' and
'cement_validate_config' were removed in favor of the new pre/post setup
and run hooks.
* :issue:`82` - Change 'meta' classes to Python-proper 'Meta', and
interfaces to use 'IMeta'. Old functionality will be completely removed
before Cement stable release.
1.9.2 - Wed Nov 02, 2011
------------------------------------------------------------------------------
This is an initial beta release of Cement, and therefore no bugs or features
are listed. Future releases will detail all changes.