pytorch-template icon indicating copy to clipboard operation
pytorch-template copied to clipboard

Cookiecutter

Open khornlund opened this issue 5 years ago • 3 comments

I wonder if you might prefer to make this project a cookiecutter template rather than using a copy script.

You can see my fork here for an example. To test it out, simply run

pip install cookiecutter
cookiecutter https://github.com/khornlund/cookiecutter-pytorch

If so, I'll submit a PR.

khornlund avatar Apr 11 '19 10:04 khornlund

Thank you for the suggestion @khornlund, the cookiecutter project looks quite interesting. I've tried your example, and got some questions for you.

I noticed initialization process asking a bunch of questions as following.

repo_name [my_repo_name]: trial_run_ckc
author_name [Karl Hornlund]: Seonkyu Park
author_email [[email protected]]: [email protected]
github_username [khornlund]: SunQparK
package_version [0.0.1]: 0.0.1
package_description [Short description]: what these questions are for?
package_name [trial_run_ckc]:  
package_url [https://github.com/SunQparK/trial_run_ckc]: 

New project directory appeared after that, but the structure looked weird.

trial_run_ckc
  ├── trial_run_ckc
  │        └─  why source code is in this nested directory??
  └─ other file, folders: what these files are for?

I think these things are quite uncomfortable. Are these features necessary for using cookiecutter templates? And, what are the advantages of using cookiecuter over copy script?? As I told in issue #43, I'd like to encourage people to save a copy of this template locally and customize when they need. Python script looks just fine for that purpose.

SunQpark avatar Apr 12 '19 14:04 SunQpark

Hi @SunQpark ,

I've made a bunch of other changes to my repo, so that's why the structure is different. This is not necessary though - you could keep the structure the same and still use cookiecutter.

The advantage of cookiecutter is the ability to set a list of questions (with default answers) to be asked, and then use those answers to create the template. For example when you created the new trial_run_ckc directory, it would have created a setup.py file for you with all the relevant information filled in.

The addition of the setup.py file is just something I did to my repo - you wouldn't have to do the same. I'm just using it as an example for how cookiecutter can insert initialisation values into the template you create.

I actually found this repo while looking for a pytorch cookiecutter template. The best I could find was here, but it didn't have as good functionality. As you can see on the cookiecutter repo they link to lots of different templates for different kinds of projects, but there aren't any pytorch ones yet. I think this repo would be a good candidate to become the pytorch cookiecutter template :)

khornlund avatar Apr 13 '19 05:04 khornlund

Currently I have two questions on this. cookiecutter seems to require a specific format to be used as template. Maybe we can maintain a branch for this. Is it possible to filter out unnecessary files like readme, cache and data while having same directory structure as original repository(for easy maintenance)? And is it possible to initialize little bit different code depending on python version(eg. can I use different code for python 3.6 and 3.5)? If so, let's work on this after your PR #45 is done.

SunQpark avatar Apr 15 '19 09:04 SunQpark