ChangeLog 17 KB

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