Generate_context behavior when overwrite_if_exists = True and _copy_without_render is specified
Author: nicainCreated Jan 5, 2018Updated Jan 27, 2026
Labelsbug
- Cookiecutter version: 1.6.0
- Python version: py27, py35, py36
- Operating System: Ubuntu 16.04.3 LTS
Description:
When overwrite_if_exists = True, and _copy_without_render is specified, the use of shutil.copytree in generate.py::generate_files means that the files cannot be over-written. This seems like incorrect behavior to me.
What I've run:
Traceback (most recent call last):
File "/home/nicholasc/anaconda2/bin/cookiecutter", line 11, in <module>
load_entry_point('cookiecutter==1.6.0', 'console_scripts', 'cookiecutter')()
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/cookiecutter/cli.py", line 120, in main
password=os.environ.get('COOKIECUTTER_REPO_PASSWORD')
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/cookiecutter/main.py", line 94, in cookiecutter
output_dir=output_dir
File "/home/nicholasc/anaconda2/lib/python2.7/site-packages/cookiecutter/generate.py", line 328, in generate_files
shutil.copytree(indir, outdir)
File "/home/nicholasc/anaconda2/lib/python2.7/shutil.py", line 177, in copytree
os.makedirs(dst)
File "/home/nicholasc/anaconda2/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/home/nicholasc/tmp/ccdebug/projectname/docs/aibs_sphinx'I have prepared a fix and will submit a PR that highlights the difference, and works around.
Source: cookiecutter/cookiecutter