1

I have created a cookiecutter template. When I run it using the address from my directory in my computer, it works. However, I want to use cruft to be able to update my projects. It seems to require the template to be in a repository. So I have loaded my cookiecutter template in my repo and called cookiecutter git/repo/address. It seemed to work, since it asked all the questions required for all directories and files. However, as it was about to finish, it gave me the following error:

Traceback (most recent call last):
  File "/home/luisa/miniconda3/bin/cookiecutter", line 10, in <module>
    sys.exit(main())
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/cli.py", line 194, in main
    cookiecutter(
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/main.py", line 114, in cookiecutter
    result = generate_files(
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/generate.py", line 281, in generate_files
    template_dir = find_template(repo_dir)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/find.py", line 31, in find_template
    raise NonTemplatedInputDirException
cookiecutter.exceptions.NonTemplatedInputDirException

Any idea what is happening? Thanks! P.S. I am microbiologist with some experience in coding and working with Linux. Please think about the microbiologist part when answering ;-) ... I am still learning and advance CS language is limited :-)

What I have tried ...

I have verified that my cookiecutter template is still working after git init (just in case) by creating a new project using the absolute address of the directory as argument for the cookiecutter. It works but not from the git.

when I tried again to call it:

You've downloaded /home/luisa/.cookiecutters/my_repo_name before. Is it okay to delete and re-download it? [yes]: 
project_name [My great project name]: ThirdTrial
project_author [great scientist-in-training name]: Luisa
year [This year]: 2023
license [MIT]: 
Select files:
1 - {'template': 'README.md', 'filename': 'README.md'}
2 - {'template': 'License.txt', 'filename': 'License.txt'}
Choose from 1, 2 [1]: 1
data_directory [Data]: 
data_raw_dir [Data/raw]: 
data_derived_dir [Data/derived]: 
data_sim_dir [Data/sim]: 
code_directory [Code]: 
code_r_directory [Code/r]: 
code_python_directory [Code/python]: 
exploratory_directory [Exploratory]: 
exploratory_r_directory [Exploratory/R_notebooks]: 
exploratory_python_directory [Exploratory/Jupyter_Notebooks]: 
figures_directory [Figures]: 
stats_directory [Stats]: 
manuscript_directory [Manuscript]: 
man_figures_directory [Manuscript/figures]: 
Traceback (most recent call last):
  File "/home/luisa/miniconda3/bin/cookiecutter", line 10, in <module>
    sys.exit(main())
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/cli.py", line 194, in main
    cookiecutter(
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/main.py", line 114, in cookiecutter
    result = generate_files(
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/generate.py", line 281, in generate_files
    template_dir = find_template(repo_dir)
  File "/home/luisa/miniconda3/lib/python3.9/site-packages/cookiecutter/find.py", line 31, in find_template
    raise NonTemplatedInputDirException
cookiecutter.exceptions.NonTemplatedInputDirException

it is not better and it tells me something about a .cookiecutters stored in my profile. I made a copy of the .cookiecutters directory inside the miniconda3... no change...

New trial but failed

I kept thinking about the search in the conda environment, so I decided to deactivate conda completely and install cookiecutter with pip3 in my computer, then calling the cookiecutter as I did before. No use. Same error...

Luisa
  • 11
  • 3

1 Answers1

0

This happens when you try to use the cookiecutter variable for top level directory.

Please check the directory structure, it should be like this:

my_repo_name
      - cookiecutter.json
      - {{cookiecutter.data_directory}}
            - filea.txt
      - {{cookiecutter.some_file}}.py

If you want to move some directories anywhere else, you can use hooks to do some activity after and before the generate the cookiecutter files. There are some example here.

  • Thanks for answering! I checked and my structure is fine. I have been playing with it and I found that one folder was not being created from the git project and that was causing the problem. As soon as I repaired it (by including an extra README.md file in the directory), the cookiecutter worked! – Luisa Apr 19 '23 at 07:52