History¶
1.3.0 (2015-11-10) Pumpkin Spice¶
The goal of this release is to extend the user config feature and to make hook execution more robust.
New Features:
- Abort project generation if
pre_gen_project
orpost_gen_project
hook scripts fail, thanks to @eliasdorneles (#464, #549) - Extend user config capabilities with additional cli options
--config-file
and--default-config
and environment variableCOOKIECUTTER_CONFIG
, thanks to @jhermann, @pfmoore, and @hackebrot (#258, #424, #565)
Bug Fixes:
- Fixed conditional dependencies for wheels in setup.py, thanks to @hackebrot (#557, #568)
- Reverted skipif markers to use correct reasons (bug fixed in pytest), thanks to @hackebrot (#574)
Other Changes:
- Improved path and documentation for rendering the Sphinx documentation, thanks to @eliasdorneles and @hackebrot (#562, #583)
- Added additional help entrypoints, thanks to @michaeljoseph (#563, #492)
- Added Two Scoops Academy to the README, thanks to @hackebrot (#576)
- Now handling trailing slash on URL, thanks to @ramiroluz (#573, #546)
- Support for testing x86 and x86-64 architectures on appveyor, thanks to @maiksensi (#567)
- Made tests work without installing Cookiecutter, thanks to @vincentbernat (#550)
- Encoded the result of the hook template to utf8, thanks to @ionelmc (#577. #578)
- Added test for _run_hook_from_repo_dir, thanks to @hackebrot (#579, #580)
- Implemented bumpversion, thanks to @hackebrot (#582)
- Added more cookiecutter templates to the mix:
- cookiecutter-octoprint-plugin by @foosel (#560)
- wagtail-cookiecutter-foundation by @chrisdev, et al. (#566)
1.2.1 (2015-10-18) Zimtsterne¶
Zimtsterne are cinnamon star cookies
New Feature:
- Returns rendered project dir, thanks to @hackebrot (#553)
Bug Fixes:
- Factor in choice variables (as introduced in 1.1.0) when using a user config or extra context, thanks to @ionelmc and @hackebrot (#536, #542).
Other Changes:
- Enable py35 support on Travis by using Python 3.5 as base Python (@maiksensi / #540)
- If a filename is empty, do not generate. Log instead (@iljabauer / #444)
- Fix tests as per last changes in cookiecutter-pypackage, thanks to @eliasdorneles (#555).
- Removed deprecated cookiecutter-pylibrary-minimal from the list, thanks to @ionelmc (#556)
- Moved to using rualmel.yaml instead of PyYAML, except for Windows users on Python 2.7, thanks to @pydanny (#557)
Why 1.2.1 instead of 1.2.0? There was a problem in the distribution that we pushed to PyPI. Since you can’t replace previous files uploaded to PyPI, we deleted the files on PyPI and released 1.2.1.
1.1.0 (2015-09-26) Snickerdoodle¶
The goals of this release were copy without render and a few additional command-line options such as –overwrite-if-exists, —replay, and output-dir.
Features:
- Added copy without render feature, making it much easier for developers of Ansible, Salt Stack, and other recipe-based tools to work with Cookiecutter. Thanks to @osantana and @LucianU for their innovation, as well as @hackebrot for fixing the Windows problems (#132, #184, #425).
- Added specify output directory, thanks to @tony and @hackebrot (#531, #452).
- Abort template rendering if the project output directory already exists, thanks to @lgp171188 (#470, #471).
- Add a flag to overwrite existing output directory, thanks to @lgp171188 for the implementation (#495) and @schacki, @ionelmc, @pydanny and @hackebrot for submitting issues and code reviews (#475, #493).
- Remove test command in favor of tox, thanks to @hackebrot (#480).
- Allow cookiecutter invocation, even without installing it, via
python -m cookiecutter.cli
, thanks to @vincentbernat and @hackebrot (#449, #487). - Improve the type detection handler for online and offline repositories, thanks to @charlax (#490).
- Add replay feature, thanks to @hackebrot (#501).
- Be more precise when raising an error for an invalid user config file, thanks to @vaab and @hackebrot (#378, #528).
- Added official Python 3.5 support, thanks to @pydanny and @hackebrot (#522).
- Added support for choice variables and switch to click style prompts, thanks to @hackebrot (#441, #455).
Other Changes:
- Updated click requirement to < 6.0, thanks to @pydanny (#473).
- Added landscape.io flair, thanks to @michaeljoseph (#439).
- Descriptions of PEP8 specifications and milestone management, thanks to @michaeljoseph (#440).
- Added alternate installation options in the documentation, thanks to @pydanny (#117, #315).
- The test of the which() function now tests against the date command, thanks to @vincentbernat (#446)
- Ensure file handles in setup.py are closed using with statement, thanks to @svisser (#280).
- Removed deprecated and fully extraneous compat.is_exe() function, thanks to @hackebrot (#485).
- Disabled sudo in .travis, thanks to @hackebrot (#482).
- Switched to shields.io for problematic badges, thanks to @pydanny (#491).
- Added whichcraft and removed
compat.which()
, thanks to @pydanny (#511). - Changed to export tox environment variables to codecov, thanks to @maiksensi. (#508).
- Moved to using click version command, thanks to @hackebrot (#489).
- Don’t use unicode_literals to please click, thanks to @vincentbernat (#503).
- Remove warning for Python 2.6 from __init__.py, thanks to @hackebrot.
- Removed compat.py module, thanks to @hackebrot.
- Added future to requirements, thanks to @hackebrot.
- Fixed problem where expanduser does not resolve “~” correctly on windows 10 using tox, thanks to @maiksensi. (#527)
- Added more cookiecutter templates to the mix:
- cookiecutter-beamer by @luismartingil (#307)
- cookiecutter-pytest-plugin by @pytest-dev and @hackebrot (#481)
- cookiecutter-csharp-objc-binding by @SandyChapman (#460)
- cookiecutter-flask-foundation by @JackStouffer (#457)
- cookiecutter-tryton by @fulfilio (#465)
- cookiecutter-tapioca by @vintasoftware (#496)
- cookiecutter-sublime-text-3-plugin by @kkujawinski (#500)
- cookiecutter-muffin by @drgarcia1986 (#494)
- cookiecutter-django-rest by @agconti (#520)
- cookiecutter-es6-boilerplate by @agconti (#521)
- cookiecutter-tampermonkey by @christabor (#516)
- cookiecutter-wagtail by @torchbox (#533)
1.0.0 (2015-03-13) Chocolate Chip¶
The goals of this release was to formally remove support for Python 2.6 and continue the move to using py.test.
Features:
- Convert the unittest suite to py.test for the sake of comprehensibility, thanks to @hackebrot (#322, #332, #334, #336, #337, #338, #340, #341, #343, #345, #347, #351, #412, #413, #414).
- Generate pytest coverage, thanks to @michaeljoseph (#326).
- Documenting of Pull Request merging and HISTORY.rst maintenance, thanks to @michaeljoseph (#330).
- Large expansions to the tutorials thanks to @hackebrot (#384)
- Switch to using Click for command-line options, thanks to @michaeljoseph (#391, #393).
- Added support for working with private repos, thanks to @marctc (#265).
- Wheel configuration thanks to @michaeljoseph (#118).
Other Changes:
- Formally removed support for 2.6, thanks to @pydanny (#201).
- Moved to codecov for continuous integration test coverage and badges, thanks to @michaeljoseph (#71, #369).
- Made JSON parsing errors easier to debug, thanks to @rsyring and @mark0978 (#355, #358, #388).
- Updated to Jinja 2.7 or higher in order to control trailing new lines in templates, thanks to @sfermigier (#356).
- Tweaked flake8 to ignore e731, thanks to @michaeljoseph (#390).
- Fixed failing Windows tests and corrected AppVeyor badge link thanks to @msabramo (#403).
- Added more Cookiecutters to the list:
0.9.0 (2015-01-13)¶
The goals of this release were to add the ability to Jinja2ify the cookiecutter.json default values, and formally launch support for Python 3.4.
Features:
- Python 3.4 is now a first class citizen, thanks to everyone.
- cookiecutter.json values are now rendered Jinja2 templates, thanks to @bollwyvl (#291).
- Move to py.test, thanks to @pfmoore (#319) and @ramiroluz (#310).
- Add PendingDeprecation warning for users of Python 2.6, as support for it is gone in Python 2.7, thanks to @michaeljoseph (#201).
Bug Fixes:
- Corrected typo in Makefile, thanks to @inglesp (#297).
- Raise an exception when users don’t have git or hg installed, thanks to @pydanny (#303).
Other changes:
- Creation of gitter account for logged chat, thanks to @michaeljoseph.
- Added ReadTheDocs badge, thanks to @michaeljoseph.
- Added AppVeyor badge, thanks to @pydanny
- Documentation and PyPI trove classifier updates, thanks to @thedrow (#323 and #324)
0.8.0 (2014-10-30)¶
The goal of this release was to allow for injection of extra context via the Cookiecutter API, and to fix minor bugs.
Features:
- cookiecutter() now takes an optional extra_context parameter, thanks to @michaeljoseph, @fcurella, @aventurella, @emonty, @schacki, @ryanolson, @pfmoore, @pydanny, @audreyr (#260).
- Context is now injected into hooks, thanks to @michaeljoseph and @dinopetrone.
- Moved all Python 2/3 compatability code into cookiecutter.compat, making the eventual move to six easier, thanks to @michaeljoseph (#60, #102).
- Added cookiecutterrc defined aliases for cookiecutters, thanks to @pfmoore (#246)
- Added flake8 to tox to check for pep8 violations, thanks to @natim.
Bug Fixes:
- Newlines at the end of files are no longer stripped, thanks to @treyhunner (#183).
- Cloning prompt suppressed by respecting the no_input flag, thanks to @trustrachel (#285)
- With Python 3, input is no longer converted to bytes, thanks to @uranusjr (#98).
Other Changes:
- Added more Cookiecutters to the list:
0.7.2 (2014-08-05)¶
The goal of this release was to fix cross-platform compatibility, primarily Windows bugs that had crept in during the addition of new features. As of this release, Windows is a first-class citizen again, now complete with continuous integration.
Bug Fixes:
- Fixed the contributing file so it displays nicely in Github, thanks to @pydanny.
- Updates 2.6 requirements to include simplejson, thanks to @saxix.
- Avoid unwanted extra spaces in string literal, thanks to @merwok.
- Fix @unittest.skipIf error on Python 2.6.
- Let sphinx parse :param: properly by inserting newlines #213, thanks to @mineo.
- Fixed Windows test prompt failure by replacing stdin per @cjrh in #195.
- Made rmtree remove readonly files, thanks to @pfmoore.
- Now using tox to run tests on Appveyor, thanks to @pfmoore (#241).
- Fixed tests that assumed the system encoding was utf-8, thanks to @pfmoore (#242, #244).
- Added a tox ini file that uses py.test, thanks to @pfmoore (#245).
Other Changes:
- @audreyr formally accepted position as BDFL of cookiecutter.
- Elevated @pydanny, @michaeljoseph, and @pfmoore to core committer status.
- Added Core Committer guide, by @audreyr.
- Generated apidocs from make docs, by @audreyr.
- Added contributing command to the make docs function, by @pydanny.
- Refactored contributing documentation, included adding core committer instructions, by @pydanny and @audreyr.
- Do not convert input prompt to bytes, thanks to @uranusjr (#192).
- Added troubleshooting info about Python 3.3 tests and tox.
- Added documentation about command line arguments, thanks to @saxix.
- Style cleanups.
- Added environment variable to disable network tests for environments without networking, thanks to @vincentbernat.
- Added Appveyor support to aid Windows integrations, thanks to @pydanny (#215).
- CONTRIBUTING.rst is now generated via make contributing, thanks to @pydanny (#220).
- Removed unnecessary endoing argument to json.load, thanks to @pfmoore (#234).
- Now generating shell hooks dynamically for Unix/Windows portability, thanks to @pfmoore (#236).
- Removed non-portable assumptions about directory structure, thanks to @pfmoore (#238).
- Added a note on portability to the hooks documentation, thanks to @pfmoore (#239).
- Replaced unicode_open with direct use of io.open, thanks to @pfmoore (#229).
- Added more Cookiecutters to the list:
0.7.1 (2014-04-26)¶
Bug fixes:
- Use the current Python interpreter to run Python hooks, thanks to @coderanger.
- Include tests and documentation in source distribution, thanks to @vincentbernat.
- Fix various warnings and missing things in the docs (#129, #130), thanks to @nedbat.
- Add command line option to get version (#89), thanks to @davedash and @cyberj.
Other changes:
- Add more Cookiecutters to the list:
0.7.0 (2013-11-09)¶
This is a release with significant improvements and changes. Please read through this list before you upgrade.
New features:
- Support for –checkout argument, thanks to @foobacca.
- Support for pre-generate and post-generate hooks, thanks to @raphigaziano. Hooks are Python or shell scripts that run before and/or after your project is generated.
- Support for absolute paths to cookiecutters, thanks to @krallin.
- Support for Mercurial version control system, thanks to @pokoli.
- When a cookiecutter contains invalid Jinja2 syntax, you get a better message that shows the location of the TemplateSyntaxError. Thanks to @benjixx.
- Can now prompt the user to enter values during generation from a local cookiecutter, thanks to @ThomasChiroux. This is now always the default behavior. Prompts can also be supressed with –no-input.
- Your cloned cookiecutters are stored by default in your ~/.cookiecutters/ directory (or Windows equivalent). The location is configurable. (This is a major change from the pre-0.7.0 behavior, where cloned cookiecutters were deleted at the end of project generation.) Thanks @raphigaziano.
- User config in a ~/.cookiecutterrc file, thanks to @raphigaziano. Configurable settings are cookiecutters_dir and default_context.
- File permissions are now preserved during project generation, thanks to @benjixx.
Bug fixes:
- Unicode issues with prompts and answers are fixed, thanks to @s-m-i-t-a.
- The test suite now runs on Windows, which was a major effort. Thanks to @pydanny, who collaborated on this with me.
Other changes:
- Quite a bit of refactoring and API changes.
- Lots of documentation improvements. Thanks @sloria, @alex, @pydanny, @freakboy3742, @es128, @rolo.
- Better naming and organization of test suite.
- A CookiecutterCleanSystemTestCase to use for unit tests affected by the user’s config and cookiecutters directory.
- Improvements to the project’s Makefile.
- Improvements to tests. Thanks @gperetin, @s-m-i-t-a.
- Removal of subprocess32 dependency. Now using non-context manager version of subprocess.Popen for Python 2 compatibility.
- Removal of cookiecutter’s cleanup module.
- A bit of setup.py cleanup, thanks to @oubiga.
- Now depends on binaryornot 0.2.0.
0.6.4 (2013-08-21)¶
- Windows support officially added.
- Fix TemplateNotFound Exception on Windows (#37).
0.6.2 (2013-08-19)¶
- Depend on Jinja2>=2.4 instead of Jinja2==2.7.
- Fix errors on attempt to render binary files. Copy them over from the project template without rendering.
- Fix Python 2.6/2.7 UnicodeDecodeError when values containing Unicode chars are in cookiecutter.json.
- Set encoding in Python 3 unicode_open() to always be utf-8.
0.6.1 (2013-08-12)¶
- Improved project template finding. Now looks for the occurrence of {{, cookiecutter, and }} in a directory name.
- Fix help message for input_dir arg at command prompt.
- Minor edge cases found and corrected, as a result of improved test coverage.
0.6.0 (2013-08-08)¶
- Config is now in a single cookiecutter.json instead of in json/.
- When you create a project from a git repo template, Cookiecutter prompts you to enter custom values for the fields defined in cookiecutter.json.
0.5 (2013-07-28)¶
Friendlier, more simplified command line usage:
# Create project from the cookiecutter-pypackage/ template $ cookiecutter cookiecutter-pypackage/ # Create project from the cookiecutter-pypackage.git repo template $ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Can now use Cookiecutter from Python as a package:
from cookiecutter.main import cookiecutter # Create project from the cookiecutter-pypackage/ template cookiecutter('cookiecutter-pypackage/') # Create project from the cookiecutter-pypackage.git repo template cookiecutter('https://github.com/audreyr/cookiecutter-pypackage.git')
Internal refactor to remove any code that changes the working directory.
0.4 (2013-07-22)¶
- Only takes in one argument now: the input directory. The output directory is generated by rendering the name of the input directory.
- Output directory cannot be the same as input directory.
0.3 (2013-07-17)¶
- Takes in command line args for the input and output directories.
0.2.1 (2013-07-17)¶
- Minor cleanup.
0.2 (2013-07-17)¶
Bumped to “Development Status :: 3 - Alpha”.
- Works with any type of text file.
- Directory names and filenames can be templated.
0.1.0 (2013-07-11)¶
- First release on PyPI.