Bugs:
- ?
Features:
- ?
Refactoring:
[dev]
Refactor String Substitutions (%s
) with F-Strings[dev]
Allow line lengths up to 100 characters (previously 78)[dev]
Modernize Packaging (pyproject.toml, PDM)[dev]
Implement Ruff for Code Compliance (replaces Flake8)[dev]
Remove Python 3.5, 3.6, 3.7 Docker Dev Targets[dev]
Added Python 3.13 Dev Target[dev]
Testing now requires typing compliance (make test
->make comply-mypy
)[dev]
Type Annotations (related: PR #628)[core.arg]
Issue #692[core.cache]
Issue #693[core.config]
Issue #694[core.controller]
Issue #695[core.deprecations]
Issue #696[core.exc]
Issue #697[core.extension]
Issue #698[core.foundation]
Issue #699[core.handler]
Issue #700[core.hook]
Issue #700[core.interface]
Issue #702[core.log]
Issue #703[core.mail]
Issue #704[core.meta]
Issue #705[core.output]
Issue #706[core.plugin]
Issue #707[core.template]
Issue #708[ext.alarm]
Issue #709[ext.argparse]
Issue #710[ext.colorlog]
Issue #711[ext.configparser]
Issue #712[ext.daemon]
Issue #713[ext.dummy]
Issue #714[ext.generate]
Issue #715[ext.jinja2]
Issue #716[ext.json]
Issue #717[ext.logging]
Issue #718[ext.memcached]
Issue #719[ext.mustache]
Issue #720[ext.plugin]
Issue #721[ext.print]
Issue #722[ext.redis]
Issue #723[ext.scrub]
Issue #724[ext.smtp]
Issue #725[ext.tabulate]
Issue #726[ext.watchdog]
Issue #727[ext.yaml]
Issue #728[utils.fs]
Issue #688[utils.misc]
Issue #689[utils.shell]
Issue #690[utils.version]
Issue #691
Misc:
- ?
Deprecations:
- ?
Special Recognitions:
Many thanks to @sigma67 for their contributions in modernizing the packaging system. Cement was started in 2009, and has some lingering technical debt that is now being addressed. Their contribution was a major help in moving off of setuptools and on to PDM and pyproject.toml
, along with initial implementations of Ruff for a new generation of code compliance. I sincerely appreciate your help!
Many thanks to @rednar for their contributions toward adding type annotations in PR #628. This PR was too large to merge directly, but it is serving as a guide to finally begin work toward adding type annotations to Cement. This was a massive effort, and is very helpful to have this work available to guide the effort even if it will not be merged directly.
Bugs:
[ext.logging]
Supportlogging.propagate
to avoid duplicate log entries[core.foundation]
Quiet mode file is never closed[ext.smtp]
Ability to Enable TLS without SSL[ext.smtp]
Empty (wrong) addresses sent when CC/BCC isNone
Features:
[utils.fs]
Add Timestamp Support to fs.backup[ext.smtp]
Support for sending file attachements.[ext.smtp]
Support for sending both Plain Text and HTML
Refactoring:
[core.plugin]
Deprecate the use ofimp
in favor ofimportlib
[ext.smtp]
Actually test SMTP against a real server (replace mocks)
Misc:
[dev]
Add Smoke tests for Python 3.11, 3.12[dev]
Make Python 3.12 the default development target[dev]
Drop support for Python 3.7[docker]
Base official Docker image on Python 3.12[utils.version]
Resolve deprecateddatetime.utcfromtimestamp()
[dev]
Addcomply-typing
to make helpers, start working toward typing.[dev]
Addmailpit
service to docker-compose development config.
Deprecations:
[ext.logging]
Deprecate FATAL facility in favor of CRITICAL.
Bugs:
[cli]
Cement CLI broken on Python 3.10[cli]
Generated script returns version of Cement[cli]
Generated script should allow dash/underscore[core.foundation]
App.render() not suppressed in quiet mode[core.foundation]
Console log not suppressed by output handler override (JSON/YAML)
Features:
[utils.shell]
Supportsuppress
meta option onPrompt
to suppress user input.[ext]
Useextras_require
for optional extensions
Refactoring:
[utils.misc]
Use SHA256 instead of MD5 inrando()
to support Redhap/FIPS compliance[core.foundation]
Make quiet/debug options configurable
Misc:
[dev]
Cement CLI smoke tests[dev]
Add Python 3.10 to Travis CI tests[core.deprecations]
Implement Cement deprecation warnings
Deprecations:
[core.foundation]
Deprecate CEMENT_FRAMEWORK_LOGGING in favor of CEMENT_LOG.
Bugs:
[ext.argparse]
Parser (self._parser
) not accessible inside_pre_argument_parsing
whenstacked_type = 'embedded'
[ext.configparser]
Overriding config options with environment variables doesn't work correctly with surrounding underscore characters[utils.fs]
Fix bug where trailing slash was not removed infs.backup()
of a directory.[cement.cli]
Generated README contains incorrect installation instructions.
Features:
- None
Refactoring:
[ext.colorlog]
Support subclassing of ext_colorlog.
Misc:
[dev]
Update to Python 3.10 for default development / Docker version.[dev]
Remove Python 3.5/3.6 from Travis CI tests.
Bugs:
[ext.yaml]
YamlConfigHandler uses unsafe load method[ext.configparser]
Configparser 'getboolean' exception
Features:
[utils.misc]
Supporty
as a truth boolean inutils.misc.is_true
Bugs:
[cli]
Generate Variable Mishap in Project Template[ext.generator]
Error class is malformed[core.template]
MemoryError during 'cement generate project'[core.foundation]
Contents of plugin_dirs is printed to console
Features:
[ext.argparse]
Command name override
Bugs:
[ext.redis]
Unable To Set Redis Host[ext.argparse]
Empty Sub-Commands List[core.foundation]
Handler Override Options Do Not Honor Meta Defaults
Features:
[core]
Add Docker / Docker Compose Support[core]
Add ability to override the output handler used whenapp.render()
is called.[ext.print]
Add the Print Extension to be used as a drop in replacement for the standardprint()
, but allowing the developer to honor framework features likepre_render
andpost_render
hooks.[ext.scrub]
Add Scrub Extension to easily obfuscate sensitive data from rendered output.[core]
Add ability to override config settings via environment variables.[ext.argparse]
Add ability to get list of exposed commands[core]
Add Template Interface[ext.mustache]
Add MustacheTemplateHandler[ext.handlebars]
Add HandlebarsTemplateHandler[ext.jinja2]
Add Jinja2TemplateHandler[ext.generate]
Add Generate Extension[ext.logging]
Add-l LEVEL
command line option to override log level[cli]
Add Cement CLI (includes ability to generate apps, plugins, extensions, and scripts using the Generate Extension)[core]
Added clear separation between Interfaces and Handlers[utils.fs]
- Added several helpers includefs.Tmp
for creation and cleanup of temporary directory and file.
Refactoring:
- Too many to reference
Incompatible:
[core]
Replace Interfaces with ABC Base Classes[core.foundation]
RenameCementApp
toApp
.[core.foundation]
Drop deprecatedApp.Meta.override_arguments
[core.foundation]
RemoveApp.Meta.plugin_config_dir
andApp.Meta.plugin_config_dirs
in favor ofApp.Meta.config_dirs
[core.founcation]
RenameApp.Meta.plugin_bootstrap
asApp.Meta.plugin_module
[core.handler]
RenameCementBaseHandler
toHandler
[core.handler]
Drop deprecated backend globals[core.hook]
Drop deprecated backend globals[core.controller]
DropCementBaseController
[ext.logging]
Drop deprecatedwarn
facility (usewarning
)[ext.argcomplete]
Drop ArgComplete Extension[ext.reload_config]
Drop Reload Config Extension[ext.configobj]
Drop ConfigObj Extension[ext.json]
Disableoverridable
option by default[ext.yaml]
Disableoverridable
option by default[ext.json_configobj]
Drop JSON ConfigObj Extension[ext.yaml_configobj]
Drop YAML ConfigObj Extension[ext.handlebars]
Drop Handlebars Extension[ext.genshi]
Drop Genshi Extension[ext.argparse]
ArgparseController.Meta.default_func
is now_default
, and will print help info and exit. Can now set this toNone
as well to pass/exit.[ext.plugin]
All plugin configuration sections must start withplugin.
. For example,[plugin.myplugin]
.[core.foundation]
RenamedApp.Meta.config_extension
toApp.Meta.config_file_suffix
[core.foundation]
DropApp.Meta.arguments_override_config
Deprecation:
- Everything with deprecation notices in Cement < 3