Using and Mastering Cookiecutter Transcripts
Chapter: Adding features to Cookiecutter
Lecture: Concept: Modifying cookiecutter

Login or purchase this course to watch this video and the rest of the course contents.
0:01 Now that we've worked through actually adding a feature
0:04 or enhancement to Cookiecutter
0:07 let's go back and review the core concepts or steps that we needed.
0:10 So, we're going to start by forking the Cookiecutter repo
0:14 so github.com/audreyr/cookiecutter
0:17 and we're going to fork that to our own repository.
0:20 Next, we want to clone that locally so we can work with the source
0:24 so git clone our cookiecutter fork- downloads and then we're ready to go,
0:30 just make sure that that is your user name not audreyr,
0:34 because if it's audreyr you probably can't make changes
0:36 and submit fixes back to the repository.
0:39 Next, we're going to create a feature branch.
0:41 This is partly optional, but I strongly recommend you create a feature branch,
0:45 and this whole PR work flow, so probably you can just go to the top of the list
0:50 I have changes on mine I had to go back a little bit
0:54 because I tweaked my fork for some other reasons
0:57 you can read them there in the list
0:59 but I went back to this one that's highlighted and I said create a branch from there
1:03 and you saw my convention, my github name / feature or fix branch name
1:08 make sure it's all underscores or something like that
1:11 so we checked it out and it was ready for us to start working on it.
1:14 Next, we have to create a virtual environment;
1:17 technically is not required but you probably don't want to run
1:21 your dev version of Cookiecutter as your main thing on your computer
1:24 maybe you do, but let's go ahead and create a virtual environment here
1:30 so we're going to make sure we have, in Python 2 we have virtualenv
1:33 remember on Windows pip2 doesn't exist,
1:35 you just have to make sure you use pip out of Python 2.
1:38 Okay, so we've installed it, next we can create the virtual environment
1:40 again making sure we're using the Python 2 version
1:43 so python2 -m virtualenv .env (-m for module)
1:48 and then we activated it, and notice how when we activated the prompt changed
1:52 okay so now we're ready to basically register the local dev package
1:58 as something we can run.
2:00 So we're going to do that when I register the dev package
2:03 so we just say python setup.py develop, not install or any of these things,
2:07 python setup.py develop, so that means
2:10 the local it's going to basically run out of our source directory
2:13 so as we make changes, those changes will immediately appear
2:16 in this virtual environment, so if we run this it does a whole bunch of work
2:19 to install the dependencies and then finally when it's done
2:21 we have cookiecutter 1.5.1 or whatever version you have
2:26 registered and ready to run from the command line.
2:29 Finally we go and make our change, we've got it ready to run locally
2:32 so we can test it, we've got our branch checked out for our feature
2:36 in our case I was really bugged by that missing by that weird pars error in YAML
2:42 and so I went and fixed that by adding a newline at the end
2:46 if there wasn't one right, it didn't really make a change to the contents of the file
2:51 but it made it parseable even if it wasn't there.
2:54 Make sure you follow the conventions that they use in Cookiecutter
2:57 and notice the u for Unicode, so we were using Python 2
3:02 because it's little less forgiving and some other the things
3:06 and it's a little easier for me, at least to remind myself
3:09 I'll put the u for Unicode rather than in Python 3 where it's not required
3:12 ok so we made our change here, then we're going to check in our change
3:17 and we're going to give it a detailed description
3:19 notice we have a detailed description for the people reviewing the PR
3:22 and were pushing the changes to mikeyckennedy/ in this case forgiving YAML fix,
3:27 whatever the name of our feature branch is.
3:30 Finally, once that's done, we go back to GitHub to our repo
3:33 click the button to create the pull request, and boom,
3:36 then our pull request is here,
3:39 one final note, notice down here at the bottom,
3:41 there is 3 checkins with my picture next to it,
3:43 it says if the YAML config file does not end with the single blank line, it has an X
3:47 now I ran the tox tests and I guess I didn't look carefully enough,
3:51 I just figured oh no, I don't have flake 8 installed or whatever,
3:54 and that didn't work, but it actually didn't work when I checked it in here,
3:57 this comes from the continuous integration, on the server, on the git repo,
4:02 that they have configured, and what happened was,
4:05 I had actually my docstring was 83 characters long
4:10 and they have a restriction that says 79 columns or fewer in any given line,
4:17 so notice I actually made another change I fixed that format in the docstring
4:22 and I just checked it back into my repo, to that branch
4:25 and it automatically updates the pull request, and finally,
4:28 it went all green everything was happy, everything passed.
4:31 Alright, do you have a great idea to make Cookiecutter better,
4:34 now you know how to develop and do contributions back to it.