├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .travis.yml ├── AUTHORS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Pipfile ├── Pipfile.lock ├── README.md ├── ROADMAP.md ├── __init__.py ├── appveyor.yml ├── cookiecutter.json ├── hooks ├── __init__.py └── post_gen_project.py ├── images ├── cookiecutter-git.png └── logo-256.png ├── requirements.txt ├── tasks.py ├── tests ├── __init__.py └── test_bake_project.py └── {{cookiecutter.repo_slug}} ├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── AUTHORS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSES ├── AGPL-3.0.txt ├── Apache-2.0.txt ├── BSD-2-Clause.txt ├── BSD-3-Clause.txt ├── EPL-1.0.txt ├── GPL-2.0.txt ├── GPL-3.0.txt ├── LGPL-2.1.txt ├── LGPL-3.0.txt ├── MIT.txt ├── MPL-2.0.txt └── Unlicense.txt ├── NOTICE ├── README.md └── ROADMAP.md /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | # end_of_line = git 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.py] 12 | indent_size = 4 13 | indent_style = space 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | # Bug report 8 | 9 | Create a report to help us improve 10 | 11 | ## Describe the bug 12 | 13 | A clear and concise description of what the bug is. 14 | 15 | ## To Reproduce 16 | 17 | Steps to reproduce the behavior: 18 | 19 | 1. Go to '...' 20 | 2. Click on '....' 21 | 3. Scroll down to '....' 22 | 4. See error 23 | 24 | ## Expected behavior 25 | 26 | A clear and concise description of what you expected to happen. 27 | 28 | ## Screenshots 29 | 30 | If applicable, add screenshots to help explain your problem. 31 | 32 | ## Desktop (please complete the following information): 33 | 34 | - OS: [e.g. iOS] 35 | - Browser [e.g. chrome, safari] 36 | - Version [e.g. 22] 37 | 38 | ## Smartphone (please complete the following information): 39 | 40 | - Device: [e.g. iPhone6] 41 | - OS: [e.g. iOS8.1] 42 | - Browser [e.g. stock browser, safari] 43 | - Version [e.g. 22] 44 | 45 | ## Additional context 46 | 47 | Add any other context about the problem here. 48 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | # Feature request 8 | 9 | Suggest an idea for this project 10 | 11 | ## Is your feature request related to a problem? Please describe 12 | 13 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 14 | 15 | ## Describe the solution you'd like 16 | 17 | A clear and concise description of what you want to happen. 18 | 19 | ## Describe alternatives you've considered 20 | 21 | A clear and concise description of any alternative solutions or features you've considered. 22 | 23 | ## Additional context 24 | 25 | Add any other context or screenshots about the feature request here. 26 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pull request 3 | about: Create a pull request to help us improve 4 | 5 | --- 6 | 7 | # Pull request 8 | 9 | Create a pull request to help us improve 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/windows,macos,linux,git,python 3 | 4 | .vscode/ 5 | 6 | ### Git ### 7 | *.orig 8 | 9 | ### Linux ### 10 | *~ 11 | 12 | # temporary files which can be created if a process still has a handle open of a deleted file 13 | .fuse_hidden* 14 | 15 | # KDE directory preferences 16 | .directory 17 | 18 | # Linux trash folder which might appear on any partition or disk 19 | .Trash-* 20 | 21 | # .nfs files are created when an open file is removed but is still being accessed 22 | .nfs* 23 | 24 | ### macOS ### 25 | # General 26 | .DS_Store 27 | .AppleDouble 28 | .LSOverride 29 | 30 | # Icon must end with two \r 31 | Icon 32 | 33 | # Thumbnails 34 | ._* 35 | 36 | # Files that might appear in the root of a volume 37 | .DocumentRevisions-V100 38 | .fseventsd 39 | .Spotlight-V100 40 | .TemporaryItems 41 | .Trashes 42 | .VolumeIcon.icns 43 | .com.apple.timemachine.donotpresent 44 | 45 | # Directories potentially created on remote AFP share 46 | .AppleDB 47 | .AppleDesktop 48 | Network Trash Folder 49 | Temporary Items 50 | .apdisk 51 | 52 | ### Python ### 53 | # Byte-compiled / optimized / DLL files 54 | __pycache__/ 55 | *.py[cod] 56 | *$py.class 57 | 58 | # C extensions 59 | *.so 60 | 61 | # Distribution / packaging 62 | .Python 63 | build/ 64 | develop-eggs/ 65 | dist/ 66 | downloads/ 67 | eggs/ 68 | .eggs/ 69 | lib/ 70 | lib64/ 71 | parts/ 72 | sdist/ 73 | var/ 74 | wheels/ 75 | *.egg-info/ 76 | .installed.cfg 77 | *.egg 78 | MANIFEST 79 | 80 | # PyInstaller 81 | # Usually these files are written by a python script from a template 82 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 83 | *.manifest 84 | *.spec 85 | 86 | # Installer logs 87 | pip-log.txt 88 | pip-delete-this-directory.txt 89 | 90 | # Unit test / coverage reports 91 | htmlcov/ 92 | .tox/ 93 | .coverage 94 | .coverage.* 95 | .cache 96 | nosetests.xml 97 | coverage.xml 98 | *.cover 99 | .hypothesis/ 100 | .pytest_cache/ 101 | 102 | # Translations 103 | *.mo 104 | *.pot 105 | 106 | # Django stuff: 107 | *.log 108 | local_settings.py 109 | db.sqlite3 110 | 111 | # Flask stuff: 112 | instance/ 113 | .webassets-cache 114 | 115 | # Scrapy stuff: 116 | .scrapy 117 | 118 | # Sphinx documentation 119 | docs/_build/ 120 | 121 | # PyBuilder 122 | target/ 123 | 124 | # Jupyter Notebook 125 | .ipynb_checkpoints 126 | 127 | # pyenv 128 | .python-version 129 | 130 | # celery beat schedule file 131 | celerybeat-schedule 132 | 133 | # SageMath parsed files 134 | *.sage.py 135 | 136 | # Environments 137 | .env 138 | .venv 139 | env/ 140 | venv/ 141 | ENV/ 142 | env.bak/ 143 | venv.bak/ 144 | 145 | # Spyder project settings 146 | .spyderproject 147 | .spyproject 148 | 149 | # Rope project settings 150 | .ropeproject 151 | 152 | # mkdocs documentation 153 | /site 154 | 155 | # mypy 156 | .mypy_cache/ 157 | 158 | ### Python Patch ### 159 | .venv/ 160 | 161 | ### Windows ### 162 | # Windows thumbnail cache files 163 | Thumbs.db 164 | ehthumbs.db 165 | ehthumbs_vista.db 166 | 167 | # Dump file 168 | *.stackdump 169 | 170 | # Folder config file 171 | [Dd]esktop.ini 172 | 173 | # Recycle Bin used on file shares 174 | $RECYCLE.BIN/ 175 | 176 | # Windows Installer files 177 | *.cab 178 | *.msi 179 | *.msix 180 | *.msm 181 | *.msp 182 | 183 | # Windows shortcuts 184 | *.lnk 185 | 186 | 187 | # End of https://www.gitignore.io/api/windows,macos,linux,git,python 188 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: linux 2 | 3 | branches: 4 | only: 5 | - master 6 | - develop 7 | 8 | sudo: false 9 | 10 | language: python 11 | 12 | matrix: 13 | fast_finish: true 14 | include: 15 | - python: "2.7" 16 | - python: "3.4" 17 | - python: "3.5" 18 | - python: "3.6" 19 | - python: "3.7" 20 | dist: xenial 21 | sudo: true 22 | 23 | - os: osx 24 | language: generic 25 | env: PYTHON=2.7.15 26 | 27 | - os: osx 28 | language: generic 29 | env: PYTHON=3.4.8 30 | 31 | - os: osx 32 | language: generic 33 | env: PYTHON=3.5.5 34 | 35 | - os: osx 36 | language: generic 37 | env: PYTHON=3.6.6 38 | 39 | - os: osx 40 | language: generic 41 | env: PYTHON=3.7.0 42 | 43 | before_install: | 44 | if [ "$TRAVIS_OS_NAME" == "osx" ]; then 45 | brew update 46 | brew install openssl readline 47 | brew outdated pyenv || brew upgrade pyenv 48 | brew install pyenv-virtualenv 49 | pyenv install $PYTHON 50 | export PYENV_VERSION=$PYTHON 51 | export PATH="/Users/travis/.pyenv/shims:${PATH}" 52 | pyenv-virtualenv venv 53 | source venv/bin/activate 54 | python --version 55 | fi 56 | 57 | install: pip install -r requirements.txt 58 | 59 | script: invoke tests 60 | 61 | after_success: codecov 62 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | ## Core Contributor 4 | 5 | [Nathan Urwin](https://github.com/NathanUrwin) <me@nathanurwin.com> 6 | 7 | ## Logo Designer 8 | 9 | [Dylan Yates](https://github.com/dylantyates) <dyates.texas@gmail.com> 10 | 11 | ## Contributors 12 | 13 | None yet. [Why not be the first?](CONTRIBUTING.md) 14 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [v0.6.1](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.6.1) (2018-08-06) 4 | 5 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.6.0...v0.6.1) 6 | 7 | **Implemented enhancements:** 8 | 9 | - Add note about $PATH [\#35](https://github.com/NathanUrwin/cookiecutter-git/issues/35) 10 | 11 | **Fixed bugs:** 12 | 13 | - Fix Windows support [\#42](https://github.com/NathanUrwin/cookiecutter-git/issues/42) 14 | 15 | ## [v0.6.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.6.0) (2018-08-01) 16 | 17 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.5.1...v0.6.0) 18 | 19 | **Implemented enhancements:** 20 | 21 | - Add code\_of\_conduct prompt [\#38](https://github.com/NathanUrwin/cookiecutter-git/issues/38) 22 | - Add AppVeyor support [\#33](https://github.com/NathanUrwin/cookiecutter-git/issues/33) 23 | 24 | **Fixed bugs:** 25 | 26 | - Fix repo\_slug dirs outdated content [\#39](https://github.com/NathanUrwin/cookiecutter-git/issues/39) 27 | - Remove copy\_cookiecutter\_git prompt [\#37](https://github.com/NathanUrwin/cookiecutter-git/issues/37) 28 | - Fix tests on Windows [\#26](https://github.com/NathanUrwin/cookiecutter-git/issues/26) 29 | 30 | ## [v0.5.1](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.5.1) (2018-07-30) 31 | 32 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.5.0...v0.5.1) 33 | 34 | **Fixed bugs:** 35 | 36 | - Fix Invoke on Windows [\#34](https://github.com/NathanUrwin/cookiecutter-git/issues/34) 37 | 38 | ## [v0.5.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.5.0) (2018-07-26) 39 | 40 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.4.1...v0.5.0) 41 | 42 | **Implemented enhancements:** 43 | 44 | - Add cookie-cookie feature [\#32](https://github.com/NathanUrwin/cookiecutter-git/issues/32) 45 | - Add Codecov support [\#30](https://github.com/NathanUrwin/cookiecutter-git/issues/30) 46 | - Add Travis Continuous Integration support [\#9](https://github.com/NathanUrwin/cookiecutter-git/issues/9) 47 | 48 | **Fixed bugs:** 49 | 50 | - Fix gitlab.com as remote\_provider [\#22](https://github.com/NathanUrwin/cookiecutter-git/issues/22) 51 | - Fix urllib2 URLError urlopen error [\#21](https://github.com/NathanUrwin/cookiecutter-git/issues/21) 52 | - Fix bash tests with pytest [\#8](https://github.com/NathanUrwin/cookiecutter-git/issues/8) 53 | 54 | ## [v0.4.1](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.4.1) (2018-03-16) 55 | 56 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.4.0...v0.4.1) 57 | 58 | **Fixed bugs:** 59 | 60 | - Bitbucket remote repo failed [\#20](https://github.com/NathanUrwin/cookiecutter-git/issues/20) 61 | 62 | ## [v0.4.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.4.0) (2018-03-15) 63 | 64 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.3.0...v0.4.0) 65 | 66 | **Implemented enhancements:** 67 | 68 | - Add python3 support [\#15](https://github.com/NathanUrwin/cookiecutter-git/issues/15) 69 | 70 | **Fixed bugs:** 71 | 72 | - Fix UnboundLocalError [\#17](https://github.com/NathanUrwin/cookiecutter-git/issues/17) 73 | - Fix Windows TypeError [\#16](https://github.com/NathanUrwin/cookiecutter-git/issues/16) 74 | 75 | ## [v0.3.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.3.0) (2017-03-25) 76 | 77 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.2.0...v0.3.0) 78 | 79 | **Implemented enhancements:** 80 | 81 | - Add cookiecutter.json documentation [\#14](https://github.com/NathanUrwin/cookiecutter-git/issues/14) 82 | - Refactor cookiecutter.json keys [\#13](https://github.com/NathanUrwin/cookiecutter-git/issues/13) 83 | 84 | ## [v0.2.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.2.0) (2017-03-24) 85 | 86 | [Full Changelog](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.1.0...v0.2.0) 87 | 88 | **Implemented enhancements:** 89 | 90 | - Add bitbucket.org support [\#5](https://github.com/NathanUrwin/cookiecutter-git/issues/5) 91 | - Add first tagged release [\#3](https://github.com/NathanUrwin/cookiecutter-git/issues/3) 92 | 93 | ## [v0.1.0](https://github.com/NathanUrwin/cookiecutter-git/tree/v0.1.0) (2017-03-24) 94 | 95 | **Implemented enhancements:** 96 | 97 | - Add more license choices [\#4](https://github.com/NathanUrwin/cookiecutter-git/issues/4) 98 | - Use github-changelog-generator [\#2](https://github.com/NathanUrwin/cookiecutter-git/issues/2) 99 | - Add gitlab.com support [\#1](https://github.com/NathanUrwin/cookiecutter-git/issues/1) 100 | 101 | **Fixed bugs:** 102 | 103 | - Fix insecure gitlab\_token retrieval [\#6](https://github.com/NathanUrwin/cookiecutter-git/issues/6) 104 | 105 | \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* 106 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at me@nathanurwin.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are welcome, and they are greatly appreciated! 4 | 5 | Every little bit helps, and credit will always be given. 6 | 7 | ## Types of Contributions 8 | 9 | ### Bug Reports, Feature Requests, and Feedback 10 | 11 | Create a [new project issue][1]! Try to be as descriptive as possible. 12 | 13 | ### Bug Fixes, New Features and Documentation 14 | 15 | Create a [new merge/pull request][2]! Make sure to follow the guidelines. 16 | 17 | ## Merge/Pull Request Guidelines 18 | 19 | Make sure to have atomic commits and contextual commit messages! 20 | 21 | [Check out this awesome blog post by Chris Beams for more information.][3] 22 | 23 | [1]: https://github.com/NathanUrwin/cookiecutter-git/issues/new 24 | [2]: https://github.com/NathanUrwin/cookiecutter-git/compare 25 | [3]: http://chris.beams.io/posts/git-commit/ 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Nathan Urwin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.python.org/simple" 3 | name = "pypi" 4 | verify_ssl = true 5 | 6 | [packages] 7 | cookiecutter = "*" 8 | invoke = "*" 9 | requests = "*" 10 | 11 | [dev-packages] 12 | black = "*" 13 | codecov = "*" 14 | pylint = "*" 15 | pytest = "*" 16 | pytest-cookies = "*" 17 | pytest-cov = "*" 18 | pytest-dotenv = "*" 19 | requests-mock = "*" 20 | 21 | [requires] 22 | python_version = "3.6" 23 | 24 | [pipenv] 25 | allow_prereleases = true 26 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "b0ea53d2b41e27b6b3a6b8e9070130b6c7217fb6e9285cfdb7afbf4b3025c20f" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "3.6" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "pypi", 13 | "url": "https://pypi.python.org/simple", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": { 19 | "arrow": { 20 | "hashes": [ 21 | "sha256:a558d3b7b6ce7ffc74206a86c147052de23d3d4ef0e17c210dd478c53575c4cd" 22 | ], 23 | "version": "==0.12.1" 24 | }, 25 | "binaryornot": { 26 | "hashes": [ 27 | "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", 28 | "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4" 29 | ], 30 | "version": "==0.4.4" 31 | }, 32 | "certifi": { 33 | "hashes": [ 34 | "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7", 35 | "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0" 36 | ], 37 | "version": "==2018.4.16" 38 | }, 39 | "chardet": { 40 | "hashes": [ 41 | "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", 42 | "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" 43 | ], 44 | "version": "==3.0.4" 45 | }, 46 | "click": { 47 | "hashes": [ 48 | "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", 49 | "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" 50 | ], 51 | "version": "==6.7" 52 | }, 53 | "cookiecutter": { 54 | "hashes": [ 55 | "sha256:1316a52e1c1f08db0c9efbf7d876dbc01463a74b155a0d83e722be88beda9a3e", 56 | "sha256:ed8f54a8fc79b6864020d773ce11539b5f08e4617f353de1f22d23226f6a0d36" 57 | ], 58 | "index": "pypi", 59 | "version": "==1.6.0" 60 | }, 61 | "future": { 62 | "hashes": [ 63 | "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb" 64 | ], 65 | "version": "==0.16.0" 66 | }, 67 | "idna": { 68 | "hashes": [ 69 | "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", 70 | "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16" 71 | ], 72 | "version": "==2.7" 73 | }, 74 | "invoke": { 75 | "hashes": [ 76 | "sha256:21274204515dca62206470b088bbcf9d41ffda82b3715b90e01d71b7a4681921", 77 | "sha256:4a4cc031db311cbfb3fdd8ec93a06c892533c27b931f4be14b24c97cd042b14e", 78 | "sha256:621b6564f992c37166e16090d7e7cccb3b922e03a58e980dfa5e543a931b652f" 79 | ], 80 | "index": "pypi", 81 | "version": "==1.0.0" 82 | }, 83 | "jinja2": { 84 | "hashes": [ 85 | "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", 86 | "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" 87 | ], 88 | "version": "==2.10" 89 | }, 90 | "jinja2-time": { 91 | "hashes": [ 92 | "sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40", 93 | "sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa" 94 | ], 95 | "version": "==0.2.0" 96 | }, 97 | "markupsafe": { 98 | "hashes": [ 99 | "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" 100 | ], 101 | "version": "==1.0" 102 | }, 103 | "poyo": { 104 | "hashes": [ 105 | "sha256:103b4ee3e1c7765098fe1cabe43f828db2e2a6079646561a2117e1a809f352d6", 106 | "sha256:230ec11c2f35a23410c1f0e474f09fa4e203686f40ab3adca7b039c845d8c325" 107 | ], 108 | "version": "==0.4.1" 109 | }, 110 | "python-dateutil": { 111 | "hashes": [ 112 | "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", 113 | "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" 114 | ], 115 | "version": "==2.7.3" 116 | }, 117 | "requests": { 118 | "hashes": [ 119 | "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", 120 | "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" 121 | ], 122 | "index": "pypi", 123 | "version": "==2.19.1" 124 | }, 125 | "six": { 126 | "hashes": [ 127 | "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", 128 | "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" 129 | ], 130 | "version": "==1.11.0" 131 | }, 132 | "urllib3": { 133 | "hashes": [ 134 | "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", 135 | "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" 136 | ], 137 | "version": "==1.23" 138 | }, 139 | "whichcraft": { 140 | "hashes": [ 141 | "sha256:9e0d51c9387cb7e9f28b7edb549e6a03da758f7784f991eb4397d7f7808c57fd", 142 | "sha256:cd0e10b58960ab877d9f273cd28788730936c3cdaceec2dafad97c7cf3067d46" 143 | ], 144 | "version": "==0.4.1" 145 | } 146 | }, 147 | "develop": { 148 | "appdirs": { 149 | "hashes": [ 150 | "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", 151 | "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" 152 | ], 153 | "version": "==1.4.3" 154 | }, 155 | "arrow": { 156 | "hashes": [ 157 | "sha256:a558d3b7b6ce7ffc74206a86c147052de23d3d4ef0e17c210dd478c53575c4cd" 158 | ], 159 | "version": "==0.12.1" 160 | }, 161 | "astroid": { 162 | "hashes": [ 163 | "sha256:a8d8c7fe34e34e868426b9bafce852c355a3951eef60bc831b2ed541558f8d37", 164 | "sha256:e722228b5259ce8c7cbf75f3b0ee8b483cfbd4df01167474a84087d1aeade22c" 165 | ], 166 | "version": "==2.0.0.dev4" 167 | }, 168 | "atomicwrites": { 169 | "hashes": [ 170 | "sha256:240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585", 171 | "sha256:a24da68318b08ac9c9c45029f4a10371ab5b20e4226738e150e6e7c571630ae6" 172 | ], 173 | "version": "==1.1.5" 174 | }, 175 | "attrs": { 176 | "hashes": [ 177 | "sha256:4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265", 178 | "sha256:e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b" 179 | ], 180 | "version": "==18.1.0" 181 | }, 182 | "binaryornot": { 183 | "hashes": [ 184 | "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", 185 | "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4" 186 | ], 187 | "version": "==0.4.4" 188 | }, 189 | "black": { 190 | "hashes": [ 191 | "sha256:22158b89c1a6b4eb333a1e65e791a3f8b998cf3b11ae094adb2570f31f769a44", 192 | "sha256:4b475bbd528acce094c503a3d2dbc2d05a4075f6d0ef7d9e7514518e14cc5191" 193 | ], 194 | "index": "pypi", 195 | "version": "==18.6b4" 196 | }, 197 | "certifi": { 198 | "hashes": [ 199 | "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7", 200 | "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0" 201 | ], 202 | "version": "==2018.4.16" 203 | }, 204 | "chardet": { 205 | "hashes": [ 206 | "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", 207 | "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" 208 | ], 209 | "version": "==3.0.4" 210 | }, 211 | "click": { 212 | "hashes": [ 213 | "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", 214 | "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" 215 | ], 216 | "version": "==6.7" 217 | }, 218 | "codecov": { 219 | "hashes": [ 220 | "sha256:8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788", 221 | "sha256:ae00d68e18d8a20e9c3288ba3875ae03db3a8e892115bf9b83ef20507732bed4" 222 | ], 223 | "index": "pypi", 224 | "version": "==2.0.15" 225 | }, 226 | "cookiecutter": { 227 | "hashes": [ 228 | "sha256:1316a52e1c1f08db0c9efbf7d876dbc01463a74b155a0d83e722be88beda9a3e", 229 | "sha256:ed8f54a8fc79b6864020d773ce11539b5f08e4617f353de1f22d23226f6a0d36" 230 | ], 231 | "index": "pypi", 232 | "version": "==1.6.0" 233 | }, 234 | "coverage": { 235 | "hashes": [ 236 | "sha256:10cfac276cf3dd0acefc49444fc4e1a0a4c23c855d9fcbd555681c3a47a328e6", 237 | "sha256:18797137634b64fe488b239d3709e5f8fdea80aea09f86ec819c633a2c84f79c", 238 | "sha256:1a54b37e265dd81922f32eff50559630905770cdf8a8e560aa5a4f3297e5d5bf", 239 | "sha256:245709d580be9c7a5f8e2aeebab889f571ac323ff34bdde497072e82c0295546", 240 | "sha256:316881a28d2a1a5853495092267fcacf245805b4139f0fc996f8a6c4be6fb499", 241 | "sha256:3368098e2c633ec6b2af4f91abde94b5c3b8fa66857452137485f40be77aeda6", 242 | "sha256:33e0aa553d256b0daf43e0026db3bd415eb4b94c8dc7984afb84c10efa51a83b", 243 | "sha256:35fe7a6c06851c4c6a4c171eb796d27e023f5a1ce1e25837ea720f5b8cb76fce", 244 | "sha256:3a1c8ed67a64627ef317de64356731f8f173b76457672e933db896c080e1cc2b", 245 | "sha256:3e79318f0ddb197e775a742cc44807b1e9f3b8a57325f422fe547d3e0ca01b86", 246 | "sha256:59fa7e9857205b8d6f6fce0eaea07409bcdffd68eaec3db7e0b1ac720d4fe0f3", 247 | "sha256:6b2e2ef7572b399b0cc2f6d05c06ada40329166d6fc58beef8081fb94a41201f", 248 | "sha256:712599fc602c302c540fe7e83b6d82aaf381ec5bfb4a51dc5c30f57d214d649f", 249 | "sha256:773c0e658503538554516f5f901e775cda760648d8d2b988e16f187812c0c089", 250 | "sha256:7c8dbbc9e5480856125511f11a5c735cff3200e367adc3ba342dad506a25407d", 251 | "sha256:7fc25906ecb0a6af0c434370da6cfbcf8badb257c5cf9a6464f5e37fe4ebc949", 252 | "sha256:88d81556e00ac7e1cc9e70a2376859f41e46d187b6dd5883422aa537505f8a98", 253 | "sha256:91a915f5fc88db7adace367e8ef65d1a418d29f7ade62514d604eed87c861355", 254 | "sha256:9f696b90ff4886ba5a277995397a13b0600bfd97c70d8ae4241c2aecea11ee61", 255 | "sha256:a863f4540446d7eeaf6bf716aee277eaf38842718e86bdb80cdca78cdf1fed0d", 256 | "sha256:ab3981817dcec2dd9ea552e46538ee2e34480ec623fc365019ddae82bc9be143", 257 | "sha256:b3b6d8d8194e7e1300240402dfd9c54840d03621e69da821d8ffc8bbebe00137", 258 | "sha256:c296ac03ba12e184bef03387d89c4a0be79daff214294917ce77df32240bf4d8", 259 | "sha256:c75b3de73cc7ba2e911a907322c65dd10da216f37e7477f22dbd0098775f6345", 260 | "sha256:c87c9ee13ce431305734b8e3f0bf00468a1d4f4ee60b6ef63c69282776ab94d6", 261 | "sha256:c89c895ff5cfda45a5f681514b647986f76a4f984df125d210c154e5a1a2472b", 262 | "sha256:c9fa8fbda281b1ddf25b8fa7ccf0564198a86c9da8a413111fcadd510a98a232", 263 | "sha256:ccdf1bd8fd848690fb3d5153d0c54c41169e59804acb9652664f5f669fe25c11" 264 | ], 265 | "version": "==5.0a1" 266 | }, 267 | "future": { 268 | "hashes": [ 269 | "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb" 270 | ], 271 | "version": "==0.16.0" 272 | }, 273 | "idna": { 274 | "hashes": [ 275 | "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", 276 | "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16" 277 | ], 278 | "version": "==2.7" 279 | }, 280 | "isort": { 281 | "hashes": [ 282 | "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", 283 | "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", 284 | "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" 285 | ], 286 | "version": "==4.3.4" 287 | }, 288 | "jinja2": { 289 | "hashes": [ 290 | "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", 291 | "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" 292 | ], 293 | "version": "==2.10" 294 | }, 295 | "jinja2-time": { 296 | "hashes": [ 297 | "sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40", 298 | "sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa" 299 | ], 300 | "version": "==0.2.0" 301 | }, 302 | "lazy-object-proxy": { 303 | "hashes": [ 304 | "sha256:0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33", 305 | "sha256:1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39", 306 | "sha256:209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019", 307 | "sha256:27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088", 308 | "sha256:27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b", 309 | "sha256:2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e", 310 | "sha256:2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6", 311 | "sha256:320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b", 312 | "sha256:50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5", 313 | "sha256:5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff", 314 | "sha256:61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd", 315 | "sha256:6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7", 316 | "sha256:7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff", 317 | "sha256:7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d", 318 | "sha256:7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2", 319 | "sha256:7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35", 320 | "sha256:81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4", 321 | "sha256:933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514", 322 | "sha256:94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252", 323 | "sha256:ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109", 324 | "sha256:bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f", 325 | "sha256:cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c", 326 | "sha256:d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92", 327 | "sha256:ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577", 328 | "sha256:e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d", 329 | "sha256:e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d", 330 | "sha256:e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f", 331 | "sha256:eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a", 332 | "sha256:f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b" 333 | ], 334 | "version": "==1.3.1" 335 | }, 336 | "markupsafe": { 337 | "hashes": [ 338 | "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" 339 | ], 340 | "version": "==1.0" 341 | }, 342 | "mccabe": { 343 | "hashes": [ 344 | "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", 345 | "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" 346 | ], 347 | "version": "==0.6.1" 348 | }, 349 | "more-itertools": { 350 | "hashes": [ 351 | "sha256:2b6b9893337bfd9166bee6a62c2b0c9fe7735dcf85948b387ec8cba30e85d8e8", 352 | "sha256:6703844a52d3588f951883005efcf555e49566a48afd4db4e965d69b883980d3", 353 | "sha256:a18d870ef2ffca2b8463c0070ad17b5978056f403fb64e3f15fe62a52db21cc0" 354 | ], 355 | "version": "==4.2.0" 356 | }, 357 | "pluggy": { 358 | "hashes": [ 359 | "sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff", 360 | "sha256:d345c8fe681115900d6da8d048ba67c25df42973bda370783cd58826442dcd7c", 361 | "sha256:e160a7fcf25762bb60efc7e171d4497ff1d8d2d75a3d0df7a21b76821ecbf5c5" 362 | ], 363 | "version": "==0.6.0" 364 | }, 365 | "poyo": { 366 | "hashes": [ 367 | "sha256:103b4ee3e1c7765098fe1cabe43f828db2e2a6079646561a2117e1a809f352d6", 368 | "sha256:230ec11c2f35a23410c1f0e474f09fa4e203686f40ab3adca7b039c845d8c325" 369 | ], 370 | "version": "==0.4.1" 371 | }, 372 | "py": { 373 | "hashes": [ 374 | "sha256:3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7", 375 | "sha256:e31fb2767eb657cbde86c454f02e99cb846d3cd9d61b318525140214fdc0e98e" 376 | ], 377 | "version": "==1.5.4" 378 | }, 379 | "pylint": { 380 | "hashes": [ 381 | "sha256:285c9ae7255acb584057fe31051a37498985e632b99fc0ec93b7eb38a1b137f9", 382 | "sha256:dd5c0fc4e6a4cb9483a4367699099a7dfc8a13de9ecac4cb16855ffac68d49de" 383 | ], 384 | "index": "pypi", 385 | "version": "==2.0.0.dev2" 386 | }, 387 | "pytest": { 388 | "hashes": [ 389 | "sha256:0453c8676c2bee6feb0434748b068d5510273a916295fd61d306c4f22fbfd752", 390 | "sha256:4b208614ae6d98195430ad6bde03641c78553acee7c83cec2e85d613c0cd383d" 391 | ], 392 | "index": "pypi", 393 | "version": "==3.6.3" 394 | }, 395 | "pytest-cookies": { 396 | "hashes": [ 397 | "sha256:7054b5abd87704c3769b46deb65c332fadba80905d4103b0b1e0b4fe8a9a852a", 398 | "sha256:a6f37393b697eb3357625a5c226888d9dd020cca3d112b38c630467ce9ff7844" 399 | ], 400 | "index": "pypi", 401 | "version": "==0.3.0" 402 | }, 403 | "pytest-cov": { 404 | "hashes": [ 405 | "sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d", 406 | "sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec" 407 | ], 408 | "index": "pypi", 409 | "version": "==2.5.1" 410 | }, 411 | "pytest-dotenv": { 412 | "hashes": [ 413 | "sha256:9b66e667b8a78e0f2377e87539a2a9359e1414f67adf2fe8b3ecd84239c3351d" 414 | ], 415 | "index": "pypi", 416 | "version": "==0.1.1" 417 | }, 418 | "python-dateutil": { 419 | "hashes": [ 420 | "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", 421 | "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" 422 | ], 423 | "version": "==2.7.3" 424 | }, 425 | "python-dotenv": { 426 | "hashes": [ 427 | "sha256:4965ed170bf51c347a89820e8050655e9c25db3837db6602e906b6d850fad85c", 428 | "sha256:509736185257111613009974e666568a1b031b028b61b500ef1ab4ee780089d5" 429 | ], 430 | "version": "==0.8.2" 431 | }, 432 | "requests": { 433 | "hashes": [ 434 | "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", 435 | "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" 436 | ], 437 | "index": "pypi", 438 | "version": "==2.19.1" 439 | }, 440 | "requests-mock": { 441 | "hashes": [ 442 | "sha256:a029fe6c5244963ef042c6224ff787049bfc5bab958a1b7e5b632ef0bbb05de4", 443 | "sha256:ea06be249562e52c550cb252e03058d058d9eaca792076b0b2b54d4dc87ff5c7" 444 | ], 445 | "index": "pypi", 446 | "version": "==1.5.0" 447 | }, 448 | "six": { 449 | "hashes": [ 450 | "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", 451 | "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" 452 | ], 453 | "version": "==1.11.0" 454 | }, 455 | "toml": { 456 | "hashes": [ 457 | "sha256:8e86bd6ce8cc11b9620cb637466453d94f5d57ad86f17e98a98d1f73e3baab2d" 458 | ], 459 | "version": "==0.9.4" 460 | }, 461 | "typed-ast": { 462 | "hashes": [ 463 | "sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58", 464 | "sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d", 465 | "sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291", 466 | "sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a", 467 | "sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9", 468 | "sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892", 469 | "sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9", 470 | "sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded", 471 | "sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa", 472 | "sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe", 473 | "sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd", 474 | "sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85", 475 | "sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6", 476 | "sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46", 477 | "sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51", 478 | "sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f", 479 | "sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129", 480 | "sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c", 481 | "sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea", 482 | "sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863", 483 | "sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559", 484 | "sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87", 485 | "sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6" 486 | ], 487 | "markers": "python_version < '3.7' and implementation_name == 'cpython'", 488 | "version": "==1.1.0" 489 | }, 490 | "urllib3": { 491 | "hashes": [ 492 | "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", 493 | "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" 494 | ], 495 | "version": "==1.23" 496 | }, 497 | "whichcraft": { 498 | "hashes": [ 499 | "sha256:9e0d51c9387cb7e9f28b7edb549e6a03da758f7784f991eb4397d7f7808c57fd", 500 | "sha256:cd0e10b58960ab877d9f273cd28788730936c3cdaceec2dafad97c7cf3067d46" 501 | ], 502 | "version": "==0.4.1" 503 | }, 504 | "wrapt": { 505 | "hashes": [ 506 | "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6" 507 | ], 508 | "version": "==1.10.11" 509 | } 510 | } 511 | } 512 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cookiecutter-git 2 | 3 | [![Tagged Release](https://img.shields.io/badge/release-v0.6.1-blue.svg?longCache=true)](https://github.com/NathanUrwin/cookiecutter-git/releases/tag/v0.6.1) 4 | [![Development Status](https://img.shields.io/badge/status-beta-brightgreen.svg?longCache=true)](ROADMAP.md) 5 | [![Build Status](https://travis-ci.org/NathanUrwin/cookiecutter-git.svg?branch=master)](https://travis-ci.org/NathanUrwin/cookiecutter-git) 6 | [![Build Status](https://ci.appveyor.com/api/projects/status/3q0aik8sgmndwibp/branch/master?svg=true)](https://ci.appveyor.com/project/NathanUrwin/cookiecutter-git/branch/master) 7 | [![codecov](https://codecov.io/gh/NathanUrwin/cookiecutter-git/branch/master/graph/badge.svg)](https://codecov.io/gh/NathanUrwin/cookiecutter-git) 8 | [![python](https://img.shields.io/badge/python-2.7%2C%203.4%2C%203.5%2C%203.6%2C%203.7-blue.svg?longCache=true)](https://www.python.org/downloads/) 9 | 10 | > Git repo project template using Cookiecutter :cookie: 11 | 12 | [![Cookiecutter-Git Logo](images/logo-256.png)](https://dylantyates.com/graphics) 13 | 14 | This project is inspired by [cookiecutter-template by eviweb](https://github.com/eviweb/cookiecutter-template), and consists of a [cookiecutter](https://github.com/audreyr/cookiecutter#cookiecutter) (project template) that provides the necessary [markdown](https://guides.github.com/features/mastering-markdown/) docs and other files to pass [GitHub's open source guidelines](https://opensource.guide/) with an added bonus: remote repos are created for you [*automagically*](https://youtu.be/Z3qK8gT5LLg?t=24s)! :crystal_ball::zap::boom: 15 | 16 | _**Note:** The [Beta release](https://github.com/NathanUrwin/cookiecutter-git/releases/tag/v0.5.0) introduces [breaking changes](https://github.com/NathanUrwin/cookiecutter-git/compare/v0.4.1...v0.5.0)! [Invoke](http://docs.pyinvoke.org/en/1.1/) and [Requests](http://docs.python-requests.org/en/master/) are **now required** and [the prompts](#documentation) have changed!_ 17 | 18 | ## Table of Contents 19 | 20 | - [Table of Contents](#table-of-contents) 21 | - [Features](#features) 22 | - [Requirements](#requirements) 23 | - [Recommended](#recommended) 24 | - [Installation](#installation) 25 | - [Users](#users) 26 | - [Contributors](#contributors) 27 | - [Usage](#usage) 28 | - [Example](#example) 29 | - [Documentation](#documentation) 30 | - [Resources](#resources) 31 | - [Development](#development) 32 | - [Future](#future) 33 | - [History](#history) 34 | - [Community](#community) 35 | - [Credits](#credits) 36 | - [License](#license) 37 | 38 | ## Features 39 | 40 | - Creates new project directory 41 | - [Bare project structure](https://github.com/nathanurwin/cookiecutter-git-demo) 42 | - For any programming language or codebase 43 | - Useful but not overruling organization 44 | - [License customization](https://choosealicense.com/) 45 | - Code of Conduct customization 46 | - [Git Ignore customization](https://www.gitignore.io/) 47 | - Git repo initialization 48 | - Remote repo creation 49 | - [Bitbucket.org](https://bitbucket.org/) using HTTP Basic auth (2FA disabled only) 50 | - [GitHub.com](https://github.com/) using HTTP Basic auth (2FA support *coming soon*) 51 | - [GitLab.com](https://gitlab.com/) using `git push` (HTTP Basic auth or SSH) 52 | - Cross-platform support 53 | - [Windows](https://www.microsoft.com/en-us/windows) 54 | - [macOS](https://www.apple.com/macos/high-sierra/) 55 | - [Linux](https://www.linux.org/) 56 | 57 | ## Requirements 58 | 59 | - [Cookiecutter](https://github.com/audreyr/cookiecutter) 60 | - [Invoke](http://www.pyinvoke.org/) 61 | - [Requests](http://docs.python-requests.org/en/master/) 62 | 63 | _**Note:** Cookiecutter **should be** installed with [pip](https://pip.pypa.io/en/stable/installing/), or else `invoke` and `requests` may not be in `$PATH` and/or `$PYTHONPATH`!_ 64 | 65 | ### Recommended 66 | 67 | - [ghi](https://github.com/stephencelis/ghi) 68 | - [github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator) 69 | - [pyenv](https://github.com/pyenv/pyenv) ([conda](https://github.com/conda/conda) on Windows) 70 | 71 | ## Installation 72 | 73 | ### Users 74 | 75 | ```bash 76 | $ pip install --user cookiecutter invoke requests 77 | Collecting cookiecutter 78 | Using cached https://files.pythonhosted.org/packages/16/99/1ca3a75978270288354f419e9166666801cf7e7d8df984de44a7d5d8b8d0/cookiecutter-1.6.0-py2.py3-none-any.whl 79 | Collecting invoke 80 | Using cached https://files.pythonhosted.org/packages/6c/66/9e232c59e61f0a0b6552d68419a5c5a5dba368e105fdbfd2b6c74c402234/invoke-1.0.0-py3-none-any.whl 81 | Collecting requests 82 | Cache entry deserialization failed, entry ignored 83 | Using cached https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl 84 | Collecting binaryornot>=0.2.0 (from cookiecutter) 85 | Using cached https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl 86 | Collecting poyo>=0.1.0 (from cookiecutter) 87 | Using cached https://files.pythonhosted.org/packages/ea/6c/62c76c12015f6a1849446fb73da59be1229312c54d6d05068275e52bf29f/poyo-0.4.1-py2.py3-none-any.whl 88 | Collecting future>=0.15.2 (from cookiecutter) 89 | Collecting jinja2-time>=0.1.0 (from cookiecutter) 90 | Using cached https://files.pythonhosted.org/packages/6a/a1/d44fa38306ffa34a7e1af09632b158e13ec89670ce491f8a15af3ebcb4e4/jinja2_time-0.2.0-py2.py3-none-any.whl 91 | Collecting whichcraft>=0.4.0 (from cookiecutter) 92 | Using cached https://files.pythonhosted.org/packages/60/8a/5c52e30e11672f7e3aa61f348ddae443d122bcd96bc8b785ac76dbae944b/whichcraft-0.4.1-py2.py3-none-any.whl 93 | Collecting jinja2>=2.7 (from cookiecutter) 94 | Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl 95 | Collecting click>=5.0 (from cookiecutter) 96 | Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl 97 | Collecting certifi>=2017.4.17 (from requests) 98 | Cache entry deserialization failed, entry ignored 99 | Using cached https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl 100 | Collecting chardet<3.1.0,>=3.0.2 (from requests) 101 | Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl 102 | Collecting urllib3<1.24,>=1.21.1 (from requests) 103 | Cache entry deserialization failed, entry ignored 104 | Using cached https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl 105 | Collecting idna<2.8,>=2.5 (from requests) 106 | Cache entry deserialization failed, entry ignored 107 | Using cached https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl 108 | Collecting arrow (from jinja2-time>=0.1.0->cookiecutter) 109 | Collecting MarkupSafe>=0.23 (from jinja2>=2.7->cookiecutter) 110 | Collecting python-dateutil (from arrow->jinja2-time>=0.1.0->cookiecutter) 111 | Cache entry deserialization failed, entry ignored 112 | Using cached https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl 113 | Collecting six>=1.5 (from python-dateutil->arrow->jinja2-time>=0.1.0->cookiecutter) 114 | Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl 115 | Installing collected packages: chardet, binaryornot, poyo, future, six, python-dateutil, arrow, MarkupSafe, jinja2, jinja2-time, whichcraft, certifi, urllib3, idna, requests, click, cookiecutter, invoke 116 | Successfully installed MarkupSafe-1.0 arrow-0.12.1 binaryornot-0.4.4 certifi-2018.4.16 chardet-3.0.4 click-6.7 cookiecutter-1.6.0 future-0.16.0 idna-2.7 invoke-1.0.0 jinja2-2.10 jinja2-time-0.2.0 poyo-0.4.1 python-dateutil-2.7.3 requests-2.19.1 six-1.11.0 urllib3-1.23 whichcraft-0.4.1 117 | ``` 118 | 119 | See [Usage](#usage) 120 | 121 | ### Contributors 122 | 123 | ```bash 124 | $ git clone https://github.com/NathanUrwin/cookiecutter-git 125 | Cloning into 'cookiecutter-git'... 126 | remote: Counting objects: 757, done. 127 | remote: Compressing objects: 100% (80/80), done. 128 | remote: Total 757 (delta 63), reused 73 (delta 32), pack-reused 645 129 | Receiving objects: 100% (757/757), 337.48 KiB | 0 bytes/s, done. 130 | Resolving deltas: 100% (432/432), done. 131 | $ cd cookiecutter-git 132 | $ pipenv install --dev --pre 133 | Creating a virtualenv for this project… 134 | Using /home/user/.pyenv/versions/3.6.6/bin/python3.6m to create virtualenv… 135 | ⠋Running virtualenv with interpreter /home/user/.pyenv/versions/3.6.6/bin/python3.6m 136 | Using base prefix '/home/user/.pyenv/versions/3.6.6' 137 | New python executable in /home/user/.local/share/virtualenvs/cookiecutter-git-Jx1W2Sde/bin/python3.6m 138 | Also creating executable in /home/user/.local/share/virtualenvs/cookiecutter-git-Jx1W2Sde/bin/python 139 | Installing setuptools, pip, wheel...done. 140 | 141 | Virtualenv location: /home/user/.local/share/virtualenvs/cookiecutter-git-Jx1W2Sde 142 | Installing dependencies from Pipfile.lock (25c20f)… 143 | 🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 58/58 — 00:00:07 144 | To activate this project's virtualenv, run the following: 145 | $ pipenv shell 146 | $ pipenv run invoke tests 147 | # before running tests you may have to run: 148 | $ pipenv run pip install -r requirements.txt 149 | ``` 150 | 151 | See [CONTRIBUTING](#contributing) 152 | 153 | ## Usage 154 | 155 | ```bash 156 | $ mkdir -p ~/Projects/NathanUrwin 157 | $ cd ~/Projects/NathanUrwin 158 | $ cookiecutter gh:NathanUrwin/cookiecutter-git 159 | You've downloaded /home/user/.cookiecutters/cookiecutter-git before. Is it okay to delete and re-download it? [yes]: 160 | git_name [Nathan Urwin]: 161 | git_email [me@nathanurwin.com]: 162 | git_ignore [windows,macos,linux,git]: 163 | repo_slug [cookiecutter-git-demo]: 164 | repo_tagline [A cookiecutter-git demonstration :tada:]: 165 | repo_summary [This project ...]: 166 | Select remote_provider: 167 | 1 - github.com 168 | 2 - gitlab.com 169 | 3 - bitbucket.org 170 | 4 - none 171 | Choose from 1, 2, 3, 4 [1]: 172 | remote_username [NathanUrwin]: 173 | remote_namespace [NathanUrwin]: 174 | Select remote_protocol: 175 | 1 - https 176 | 2 - ssh 177 | Choose from 1, 2 [1]: 178 | Select code_of_conduct: 179 | 1 - contributor_covenant 180 | 2 - citizen_code_of_conduct 181 | Choose from 1, 2 [1]: 182 | Select copyright_license: 183 | 1 - MIT 184 | 2 - Apache-2.0 185 | 3 - BSD-2-Clause 186 | 4 - BSD-3-Clause 187 | 5 - GPL-2.0 188 | 6 - GPL-3.0 189 | 7 - AGPL-3.0 190 | 8 - LGPL-2.1 191 | 9 - LGPL-3.0 192 | 10 - EPL-1.0 193 | 11 - MPL-2.0 194 | 12 - Unlicense 195 | Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 [1]: 196 | copyright_holder [Nathan Urwin]: 197 | make_dirs [docs,src,tests]: 198 | Password for 'https://NathanUrwin@github.com': 199 | Initialized empty Git repository in /home/user/Projects/NathanUrwin/cookiecutter-git-demo/.git/ 200 | [master (root-commit) 5bdaa5c] Initial commit 201 | 15 files changed, 350 insertions(+) 202 | create mode 100644 .editorconfig 203 | create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md 204 | create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md 205 | create mode 100644 .github/PULL_REQUEST_TEMPLATE.md 206 | create mode 100644 .gitignore 207 | create mode 100644 AUTHORS.md 208 | create mode 100644 CHANGELOG.md 209 | create mode 100644 CODE_OF_CONDUCT.md 210 | create mode 100644 CONTRIBUTING.md 211 | create mode 100644 LICENSE 212 | create mode 100644 README.md 213 | create mode 100644 ROADMAP.md 214 | create mode 100644 docs/.gitkeep 215 | create mode 100644 src/.gitkeep 216 | create mode 100644 tests/.gitkeep 217 | To https://github.com/NathanUrwin/cookiecutter-git-demo.git 218 | * [new branch] master -> master 219 | Branch master set up to track remote branch master from origin. 220 | 221 | 222 | Success! Your project was created here: 223 | /home/user/Projects/NathanUrwin/cookiecutter-git-demo 224 | Also see: https://github.com/NathanUrwin/cookiecutter-git-demo 225 | Thanks for using cookiecutter-git! :) 226 | 227 | 228 | ``` 229 | 230 | See generated [README.md](https://github.com/NathanUrwin/cookiecutter-git-demo/blob/master/README.md) 231 | 232 | ### Example 233 | 234 | See [cookiecutter-git-demo](https://github.com/NathanUrwin/cookiecutter-git-demo) 235 | 236 | ```bash 237 | $ tree -a -I .git cookiecutter-git-demo 238 | cookiecutter-git-demo 239 | ├── AUTHORS.md 240 | ├── CHANGELOG.md 241 | ├── CODE_OF_CONDUCT.md 242 | ├── CONTRIBUTING.md 243 | ├── docs 244 | │   └── .gitkeep 245 | ├── .editorconfig 246 | ├── .github 247 | │   ├── ISSUE_TEMPLATE 248 | │   │   ├── bug_report.md 249 | │   │   └── feature_request.md 250 | │   └── PULL_REQUEST_TEMPLATE.md 251 | ├── .gitignore 252 | ├── LICENSE 253 | ├── README.md 254 | ├── ROADMAP.md 255 | ├── src 256 | │   └── .gitkeep 257 | └── tests 258 | └── .gitkeep 259 | 260 | 5 directories, 15 files 261 | ``` 262 | 263 | ## Documentation 264 | 265 | Cookiecutter prompts explained in-depth. See [cookiecutter.json](cookiecutter.json) for default values. 266 | 267 | Prompt | Explanation 268 | --- | --- 269 | `git_name` | Your full name, including first and last names, titles, and possibly even your middle name. This will go under *Core Contributor* in **AUTHORS.md**. See `git config --global user.name` 270 | `git_email` | Your git user email address you want associated with the repository. This will go under *Core Contributor* in **AUTHORS.md**. See `git config --global user.email` 271 | `git_ignore` | A comma-separated values (csv) list of preset templates of paths for git to ignore. See the [gitignore.io README](https://github.com/joeblau/gitignore.io#list) for available values. This will be used to generate the **.gitignore** file. 272 | `repo_slug` | The repository name containing only alphanumeric characters and dashes. This will be the local, top-level directory name, the remote repo endpoint, and the *H1* in the **README.md**. 273 | `repo_tagline` | A short description about the repository in *50 words or less*. This will be the remote description setting, and the content under the *H1* in the **README.md**. 274 | `repo_summary` | A long description about the repository in *50 words or more*. This will go after the `repo_tagline` with the content under the *H1* in the **README.md**. 275 | `remote_provider` | A choice between `bitbucket.org`, `github.com`, `gitlab.com`, or `none`. This option creates a remote repository for you, and is this project's main feature so defaults to `github.com`. 276 | `remote_username` | Your git `remote_provider` account username. This will be used for all git remote-based actions. This is accompanied with a `remote_password` prompt that is never saved. 277 | `remote_namespace` | Where the remote repository will live, which can be a user or organization, group, or team (depending on the `remote_provider`). Only used if `remote_provider` is not `none`. 278 | `remote_protocol` | A choice between the `https` and `ssh` protocols. Defaults to `https`, since those using `ssh` qualify as power users and should be able to handle setting up a [cookiecutter user config](https://cookiecutter.readthedocs.io/en/latest/advanced/user_config.html). 279 | `code_of_conduct` | Adopt a code of conduct to define community standards, signal a welcoming and inclusive project, and outline procedures for handling abuse. A choice between the [Contributor Covenant](https://www.contributor-covenant.org/) or [Citizen Code of Conduct](http://citizencodeofconduct.org/). 280 | `copyright_license` | The copyright license for the repository. This will be used to generate the **LICENSE** and **NOTICE** files, and determines how end users can ultimately use your source code. 281 | `copyright_holder` | The individual or company that holds the intellectual property copyright. This will be used in the **LICENSE** file, rather than the `git_name`. 282 | `make_dirs` | A comma-separated values (csv) list of directory names which are made with **.gitkeep** files. Nested dirs work if the system path separator is correct! (For example: **tests/unit** for Mac/Linux or **tests\\\\unit** for Windows) 283 | 284 | ## Resources 285 | 286 | - [GitHub's recommended community standards](https://blog.github.com/2017-06-14-new-community-tools/) 287 | - [Creating a Cookiecutter](https://cookiecutter.readthedocs.io/en/latest/first_steps.html) 288 | - [Using Pre/Post-Generate Hooks](https://cookiecutter.readthedocs.io/en/latest/advanced/hooks.html) 289 | - [GitHub Developer Licenses](https://developer.github.com/v3/licenses/) 290 | - [mkdir -p functionality in python](https://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python) 291 | - [Create empty file using python](https://stackoverflow.com/questions/12654772/create-empty-file-using-python) 292 | - [Git Ignore Dot IO Docs](https://www.gitignore.io/docs) 293 | - [Bitbucket API Basic auth](https://developer.atlassian.com/bitbucket/api/2/reference/meta/authentication#basic-auth) 294 | - [Bitbucket API repos](https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D#post) 295 | - [GitHub API Basic auth](https://developer.github.com/v3/#basic-authentication) 296 | - [GitHub API Create repos](https://developer.github.com/v3/repos/#create) 297 | - [GitLab Push to create a new project](https://docs.gitlab.com/ce/gitlab-basics/create-project.html#push-to-create-a-new-project) 298 | 299 | ## Development 300 | 301 | See [CONTRIBUTING](CONTRIBUTING.md) 302 | 303 | ### Future 304 | 305 | See [ROADMAP](ROADMAP.md) 306 | 307 | ### History 308 | 309 | See [CHANGELOG](CHANGELOG.md) 310 | 311 | ### Community 312 | 313 | See [CODE OF CONDUCT](CODE_OF_CONDUCT.md) 314 | 315 | ## Credits 316 | 317 | See [AUTHORS](AUTHORS.md) 318 | 319 | ## License 320 | 321 | See [LICENSE](LICENSE) 322 | -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | # Road Map 2 | 3 | ## Development Status 4 | 5 | - [ ] ![Development Status](https://img.shields.io/badge/status-planning-lightgrey.svg?longCache=true) 6 | - [ ] ![Development Status](https://img.shields.io/badge/status-pre--alpha-red.svg?longCache=true) 7 | - [ ] ![Development Status](https://img.shields.io/badge/status-alpha-yellow.svg?longCache=true) 8 | - [x] ![Development Status](https://img.shields.io/badge/status-beta-brightgreen.svg?longCache=true) 9 | - [ ] ![Development Status](https://img.shields.io/badge/status-stable-blue.svg?longCache=true) 10 | - [ ] ![Development Status](https://img.shields.io/badge/status-mature-8A2BE2.svg?longCache=true) 11 | - [ ] ![Development Status](https://img.shields.io/badge/status-inactive-lightgrey.svg?longCache=true) 12 | 13 | ## Project Milestones 14 | 15 | - [x] Release [Version 0.5.0 (Beta)](https://github.com/NathanUrwin/cookiecutter-git/releases/tag/v0.5.0) 16 | - [x] Release [Version 0.6.0 (Beta)](https://github.com/NathanUrwin/cookiecutter-git/releases/tag/v0.6.0) 17 | - [ ] Release [Version 0.7.0 (Beta)](https://github.com/NathanUrwin/cookiecutter-git/milestone/4) 18 | - [ ] Release [Version 1.0.0 (Stable)](https://github.com/NathanUrwin/cookiecutter-git/milestone/2) 19 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanUrwin/cookiecutter-git/ae4f73d9db7a270bfdc8c6c581b235b8be2189d8/__init__.py -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: v0.6.1+appveyor.{build} 2 | 3 | environment: 4 | matrix: 5 | - PYTHON: "C:\\Python27" 6 | - PYTHON: "C:\\Python34" 7 | - PYTHON: "C:\\Python35" 8 | - PYTHON: "C:\\Python36" 9 | - PYTHON: "C:\\Python37" 10 | - PYTHON: "C:\\Python27-x64" 11 | - PYTHON: "C:\\Python34-x64" 12 | - PYTHON: "C:\\Python35-x64" 13 | - PYTHON: "C:\\Python36-x64" 14 | - PYTHON: "C:\\Python37-x64" 15 | 16 | init: 17 | - "git config --global user.email me@nathanurwin.com" 18 | - "git config --global user.name 'Nathan Urwin'" 19 | 20 | install: 21 | - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" 22 | - "python -m pip install --upgrade pip" 23 | - "python -m pip install -r requirements.txt" 24 | 25 | build: off 26 | 27 | test_script: "invoke tests" 28 | 29 | after_test: "codecov" 30 | -------------------------------------------------------------------------------- /cookiecutter.json: -------------------------------------------------------------------------------- 1 | { 2 | "git_name": "Nathan Urwin", 3 | "git_email": "me@nathanurwin.com", 4 | "git_ignore": "windows,macos,linux,git", 5 | 6 | "repo_slug": "cookiecutter-git-demo", 7 | "repo_tagline": "A cookiecutter-git demonstration :tada:", 8 | "repo_summary": "This project ...", 9 | 10 | "remote_provider": ["github.com", "gitlab.com", "bitbucket.org", "none"], 11 | "remote_username": "{{ cookiecutter.git_name | replace(' ', '') }}", 12 | "remote_namespace": "{{ cookiecutter.remote_username }}", 13 | "remote_protocol": ["https", "ssh"], 14 | 15 | "code_of_conduct": ["contributor_covenant", "citizen_code_of_conduct"], 16 | "copyright_license": [ 17 | "MIT", 18 | "Apache-2.0", 19 | "BSD-2-Clause", 20 | "BSD-3-Clause", 21 | "GPL-2.0", 22 | "GPL-3.0", 23 | "AGPL-3.0", 24 | "LGPL-2.1", 25 | "LGPL-3.0", 26 | "EPL-1.0", 27 | "MPL-2.0", 28 | "Unlicense" 29 | ], 30 | "copyright_holder": "{{ cookiecutter.git_name }}", 31 | 32 | "make_dirs": "docs,src,tests", 33 | 34 | "_testing": false 35 | } 36 | -------------------------------------------------------------------------------- /hooks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanUrwin/cookiecutter-git/ae4f73d9db7a270bfdc8c6c581b235b8be2189d8/hooks/__init__.py -------------------------------------------------------------------------------- /hooks/post_gen_project.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import ( 3 | absolute_import, 4 | division, 5 | print_function, 6 | unicode_literals, 7 | ) 8 | 9 | """ 10 | Cookiecutter-Git Post Project Generation Hook Module. 11 | """ 12 | import base64 13 | from contextlib import contextmanager 14 | import errno 15 | import getpass 16 | import json 17 | import os 18 | import re 19 | import shutil 20 | 21 | if os.name == "nt": 22 | 23 | def quote(arg): 24 | # https://stackoverflow.com/a/29215357 25 | if re.search(r'(["\s])', arg): 26 | arg = '"' + arg.replace('"', r"\"") + '"' 27 | meta_chars = '()%!^"<>&|' 28 | meta_re = re.compile( 29 | "(" + "|".join(re.escape(char) for char in list(meta_chars)) + ")" 30 | ) 31 | meta_map = {char: "^%s" % char for char in meta_chars} 32 | 33 | def escape_meta_chars(m): 34 | char = m.group(1) 35 | return meta_map[char] 36 | 37 | return meta_re.sub(escape_meta_chars, arg) 38 | 39 | 40 | else: 41 | try: # py34, py35, py36, py37 42 | from shlex import quote 43 | except ImportError: # py27 44 | from pipes import quote 45 | 46 | from invoke import Result, run, UnexpectedExit 47 | import requests 48 | 49 | 50 | class MockResult(Result): 51 | mock_stdout = { 52 | "github.com": """Password for 'https://NathanUrwin@github.com': 53 | Counting objects: 18, done. 54 | Delta compression using up to 8 threads. 55 | Compressing objects: 100% (15/15), done. 56 | Writing objects: 100% (18/18), 6.24 KiB | 0 bytes/s, done. 57 | Total 18 (delta 0), reused 0 (delta 0) 58 | To https://github.com/NathanUrwin/cookiecutter-git-demo.git 59 | * [new branch] master -> master 60 | Branch master set up to track remote branch master from origin.""", 61 | "gitlab.com": """Password for 'https://NathanUrwin@gitlab.com': 62 | Counting objects: 13, done. 63 | Delta compression using up to 8 threads. 64 | Compressing objects: 100% (10/10), done. 65 | Writing objects: 100% (13/13), 5.25 KiB | 0 bytes/s, done. 66 | Total 13 (delta 0), reused 0 (delta 0) 67 | remote: 68 | remote: The private project NathanUrwin/cookiecutter-git-demo was successfully created. 69 | remote: 70 | remote: To configure the remote, run: 71 | remote: git remote add origin https://gitlab.com/NathanUrwin/cookiecutter-git-demo.git 72 | remote: 73 | remote: To view the project, visit: 74 | remote: https://gitlab.com/NathanUrwin/cookiecutter-git-demo 75 | remote: 76 | To https://gitlab.com/NathanUrwin/cookiecutter-git-demo.git 77 | * [new branch] master -> master 78 | Branch master set up to track remote branch master from origin.""", 79 | "bitbucket.org": """Password for 'https://NathanUrwin@bitbucket.org': 80 | Counting objects: 13, done. 81 | Delta compression using up to 8 threads. 82 | Compressing objects: 100% (10/10), done. 83 | Writing objects: 100% (13/13), 5.26 KiB | 0 bytes/s, done. 84 | Total 13 (delta 0), reused 0 (delta 0) 85 | To https://bitbucket.org/NathanUrwin/cookiecutter-git-demo.git 86 | * [new branch] master -> master 87 | Branch master set up to track remote branch master from origin.""", 88 | } 89 | 90 | def __init__(self, remote_provider, **kwargs): 91 | stdout = self.mock_stdout.get(remote_provider, "") 92 | super(MockResult, self).__init__(stdout, **kwargs) 93 | 94 | 95 | @contextmanager 96 | def git_disable_gpgsign(): 97 | """ 98 | Disables git commit GPG signing temporarily. 99 | """ 100 | try: 101 | result = run("git config --global --get commit.gpgSign", hide=True) 102 | # throws only on travis-ci. unknown reason 103 | except UnexpectedExit: 104 | 105 | class ResultNone: 106 | stdout = "" 107 | 108 | result = ResultNone() 109 | if result.stdout.strip() == "true": 110 | # turn off gpg signing commits 111 | try: 112 | run("git config --global --unset commit.gpgSign") 113 | yield 114 | # turn gpg signing back on 115 | except KeyboardInterrupt: 116 | run("git config --global --bool commit.gpgSign true") 117 | finally: 118 | run("git config --global --bool commit.gpgSign true") 119 | else: 120 | yield 121 | 122 | 123 | class PostGenProjectHook(object): 124 | """ 125 | Post Project Generation Class Hook. 126 | """ 127 | 128 | bitbucket_repos_url_base = ( 129 | "https://api.bitbucket.org/2.0/repositories/{}/{}" 130 | ) 131 | create_remote_url = None 132 | github_repos_url = "https://api.github.com/user/repos" 133 | git_ignore_url_base = "https://www.gitignore.io/api/{}" 134 | headers = {} 135 | json_header = {"Content-Type": "application/json; charset=utf-8"} 136 | password_prompt_base = "Password for 'https://{}@{}': " 137 | remote_message_base = "Also see: https://{}/{}/{}" 138 | success_message_base = "\n\nSuccess! Your project was created here:\n{}\n{}\nThanks for using cookiecutter-git! :)\n\n" 139 | repo_dirpath = os.getcwd() 140 | cookiecutter_json_filepath = os.path.join( 141 | repo_dirpath, "cookiecutter.json" 142 | ) 143 | raw_repo_slug_dirpath = os.path.join( 144 | repo_dirpath, "{% raw %}{{cookiecutter.repo_slug}}{% endraw %}" 145 | ) 146 | github_dirpath = os.path.join(repo_dirpath, ".github") 147 | git_ignore_filepath = os.path.join(repo_dirpath, ".gitignore") 148 | hooks_dirpath = os.path.join(repo_dirpath, "hooks") 149 | licenses_dirpath = os.path.join(repo_dirpath, "LICENSES") 150 | license_filepath = os.path.join(repo_dirpath, "LICENSE") 151 | notice_filepath = os.path.join(repo_dirpath, "NOTICE") 152 | 153 | def __init__(self, *args, **kwargs): 154 | """ 155 | Initializes the class instance. 156 | """ 157 | self.result = self._get_cookiecutter_result() 158 | self.copyright_holder = self.result.get("copyright_holder") 159 | self.copyright_license = self.result.get("copyright_license") 160 | self.git_email = self.result.get("git_email") 161 | self.git_ignore = self.result.get("git_ignore") 162 | self.git_name = self.result.get("git_name") 163 | self.make_dirs = self.result.get("make_dirs") 164 | self.remote_namespace = self.result.get("remote_namespace") 165 | self.remote_protocol = self.result.get("remote_protocol") 166 | self.remote_provider = str(self.result.get("remote_provider")).lower() 167 | self.remote_username = self.result.get("remote_username") 168 | self.repo_slug = self.result.get("repo_slug") 169 | self.repo_summary = self.result.get("repo_summary") 170 | self.repo_tagline = self.result.get("repo_tagline") 171 | self._testing = str(self.result.get("_testing")).lower() == "true" 172 | # 173 | self.apache_license = self.copyright_license == "Apache-2.0" 174 | self.bitbucket_repos_url = self.bitbucket_repos_url_base.format( 175 | self.remote_namespace, self.repo_slug 176 | ) 177 | self.git_ignore_url = self.git_ignore_url_base.format(self.git_ignore) 178 | self.nested_license_filepath = os.path.join( 179 | self.licenses_dirpath, "{}.txt".format(self.copyright_license) 180 | ) 181 | self.new_git_ignore = self.git_ignore != "windows,macos,linux,git" 182 | self.password_prompt = self.password_prompt_base.format( 183 | self.remote_username, self.remote_provider 184 | ) 185 | self.project_dirpaths = [ 186 | os.path.join(self.repo_dirpath, dirname.strip()) 187 | for dirname in self.make_dirs.split(",") 188 | if dirname.strip() 189 | ] 190 | self.remote_data = { 191 | "name": self.repo_slug, 192 | "description": self.repo_tagline, 193 | } 194 | self.create_remote_url = self._get_create_remote_url() 195 | self.encoded_data = json.dumps(self.remote_data).encode() 196 | self.remote_password = "" 197 | self.remote_repo = self.remote_provider != "none" 198 | if self.remote_repo: 199 | self.remote_password = self._get_remote_password() 200 | self.remote_origin_url = self._get_remote_origin_url() 201 | self.remote_origin_url_with_pass = self._get_remote_origin_url( 202 | with_pass=True 203 | ) 204 | self.remote_message = ( 205 | self.remote_message_base.format( 206 | self.remote_provider, self.remote_namespace, self.repo_slug 207 | ) 208 | if self.remote_repo 209 | else "" 210 | ) 211 | self.success_message = self.success_message_base.format( 212 | self.repo_dirpath, self.remote_message 213 | ) 214 | 215 | @staticmethod 216 | def format_basic_auth(username, password): 217 | """ 218 | Formats HTTP Basic auth with base64 encoding. 219 | 220 | :param username: 221 | :param password: 222 | """ 223 | auth_data = "{}:{}".format(username, password) 224 | return base64.b64encode(auth_data.encode()) 225 | 226 | @staticmethod 227 | def git_init(): 228 | """ 229 | Runs git init. 230 | """ 231 | run("git init") 232 | 233 | @staticmethod 234 | def git_add(): 235 | """ 236 | Runs git add all. 237 | """ 238 | # `git add -A` 239 | run("git add --all") 240 | 241 | @staticmethod 242 | def git_commit(message="Initial commit"): 243 | """ 244 | Runs git commit with an initial message. 245 | 246 | :param message: 247 | """ 248 | command = "git commit --message {}".format(quote(message)) 249 | if os.name == "nt": 250 | # See https://github.com/NathanUrwin/cookiecutter-git/issues/43 251 | with git_disable_gpgsign(): 252 | run(command) 253 | else: 254 | # `git commit -m "Initial commit"` 255 | run(command) 256 | 257 | @staticmethod 258 | def _get_cookiecutter_result(): 259 | """ 260 | Removes as much jinja2 templating from the hook as possible. 261 | """ 262 | # http://flask.pocoo.org/docs/latest/templating/#standard-filters 263 | try: 264 | result = json.loads("""{{ cookiecutter | tojson() }}""") 265 | # current temp hack around for `pipenv run pytest -s` 266 | except json.JSONDecodeError: 267 | result = {} 268 | repo_dirpath = os.path.dirname( 269 | os.path.dirname(os.path.abspath(__file__)) 270 | ) 271 | json_filepath = os.path.join(repo_dirpath, "cookiecutter.json") 272 | with open(json_filepath) as f: 273 | for k, v in json.loads(f.read()).items(): 274 | result[k] = v 275 | if isinstance(v, list): 276 | result[k] = v[0] 277 | return result 278 | 279 | def _get_create_remote_url(self): 280 | """ 281 | Gets the create remote URL. 282 | """ 283 | create_remote_url = None 284 | if self.remote_username != self.remote_namespace: 285 | self.github_repos_url = "https://api.github.com/orgs/{}/repos".format( 286 | self.remote_namespace 287 | ) 288 | if self.remote_provider == "bitbucket.org": 289 | create_remote_url = self.bitbucket_repos_url 290 | self.headers.update(self.json_header) 291 | self.remote_data.update({"has_issues": True, "is_private": True}) 292 | elif self.remote_provider == "github.com": 293 | create_remote_url = self.github_repos_url 294 | return create_remote_url 295 | 296 | def _get_remote_origin_url(self, with_pass=False): 297 | """ 298 | Gets the remote origin URL. 299 | """ 300 | if with_pass: 301 | remote_origin_url = "https://{}:{}@{}/{}/{}.git".format( 302 | requests.utils.quote(self.remote_username, safe=""), 303 | requests.utils.quote(self.remote_password, safe=""), 304 | self.remote_provider, 305 | self.remote_namespace, 306 | self.repo_slug, 307 | ) 308 | else: 309 | remote_origin_url = "https://{}@{}/{}/{}.git".format( 310 | requests.utils.quote(self.remote_username, safe=""), 311 | self.remote_provider, 312 | self.remote_namespace, 313 | self.repo_slug, 314 | ) 315 | if self.remote_protocol == "ssh": 316 | remote_origin_url = "git@{}:{}/{}.git".format( 317 | self.remote_provider, self.remote_namespace, self.repo_slug 318 | ) 319 | return remote_origin_url 320 | 321 | def _get_remote_password(self): 322 | """ 323 | Gets the remote password with getpass. 324 | """ 325 | # current hack for tests. better work around ? 326 | if self._testing: 327 | remote_password = "notmypassword" 328 | else: 329 | # prompt CLI users for password 330 | remote_password = getpass.getpass(self.password_prompt).strip() 331 | return remote_password 332 | 333 | def _git_remote_set(self): 334 | """ 335 | Sets the git remote origin url. 336 | """ 337 | run( 338 | "git remote set-url origin {}".format( 339 | quote(self.remote_origin_url) 340 | ) 341 | ) 342 | 343 | def _git_push(self): 344 | """ 345 | Pushes the git remote and sets as upstream. 346 | """ 347 | command = "git push --set-upstream origin master" 348 | if self._testing: 349 | print("_testing _git_push") 350 | r = MockResult(self.remote_provider, command=command) 351 | print(r.stdout) 352 | return r 353 | else: 354 | # `git push -u origin master` 355 | run(command) 356 | 357 | def _git_remote_add(self): 358 | """ 359 | Adds the git remote origin url with included password. 360 | """ 361 | run( 362 | "git remote add origin {}".format( 363 | quote(self.remote_origin_url_with_pass) 364 | ) 365 | ) 366 | 367 | def _git_remote_repo(self): 368 | """ 369 | Creates a remote repo if needed. 370 | """ 371 | if self.remote_provider in ["bitbucket.org", "github.com"]: 372 | # http basic auth if needed 373 | auth_base64 = self.format_basic_auth( 374 | self.remote_username, self.remote_password 375 | ) 376 | self.headers["Authorization"] = "Basic {}".format( 377 | auth_base64.decode() 378 | ) 379 | # create remote POST request 380 | requests.post( 381 | self.create_remote_url, 382 | data=self.encoded_data, 383 | headers=self.headers, 384 | ) 385 | 386 | def _git_ignore(self): 387 | """ 388 | Creates a new .gitignore if needed from gitignore.io. 389 | """ 390 | if self.new_git_ignore: 391 | # gitignore.io/api -> {{cookiecutter.repo_slug}}/.gitignore 392 | response = requests.get(self.git_ignore_url) 393 | with open(self.git_ignore_filepath, "w") as f: 394 | f.write(response.text) 395 | 396 | def _git_repo(self): 397 | """ 398 | Adds a .gitignore, initial commit, and remote repo. 399 | """ 400 | self._git_ignore() 401 | self.git_init() 402 | self.git_add() 403 | self.git_commit() 404 | if self.remote_repo: 405 | self._git_remote_repo() 406 | self._git_remote_add() 407 | self._git_push() 408 | self._git_remote_set() 409 | 410 | def _github_dir(self): 411 | """ 412 | Removes the .github dir if GitHub is not the remote provider. 413 | """ 414 | if not self.remote_provider == "github.com": 415 | shutil.rmtree(self.github_dirpath, ignore_errors=True) 416 | 417 | def _make_dirs(self): 418 | """ 419 | Makes dirs and adds .gitkeep files to them. 420 | """ 421 | for dirpath in self.project_dirpaths: 422 | # equal to bash `mkdir -p $dirpath` 423 | try: 424 | os.makedirs(dirpath) 425 | except OSError as exc: 426 | if exc.errno == errno.EEXIST and os.path.isdir(dirpath): 427 | pass 428 | else: 429 | raise 430 | # equal to bash `touch $dirpath/.gitkeep` 431 | gitkeep = os.path.join(dirpath, ".gitkeep") 432 | with open(gitkeep, "a"): 433 | os.utime(gitkeep, None) 434 | 435 | def _copyright_license(self): 436 | """ 437 | Adds the chosen LICENSE and removes the rest. 438 | """ 439 | if not self.apache_license: 440 | os.remove(self.notice_filepath) 441 | shutil.move(self.nested_license_filepath, self.license_filepath) 442 | shutil.rmtree(self.licenses_dirpath, ignore_errors=True) 443 | 444 | def run(self): 445 | """ 446 | Sets up the project license, dirs, and git repo. 447 | """ 448 | self._copyright_license() 449 | self._make_dirs() 450 | self._github_dir() 451 | self._git_repo() 452 | print(self.success_message) 453 | 454 | 455 | def main(): 456 | """ 457 | Runs the post gen project hook main entry point. 458 | """ 459 | PostGenProjectHook().run() 460 | 461 | 462 | # This is required! Don't remove!! 463 | if __name__ == "__main__": 464 | main() 465 | -------------------------------------------------------------------------------- /images/cookiecutter-git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanUrwin/cookiecutter-git/ae4f73d9db7a270bfdc8c6c581b235b8be2189d8/images/cookiecutter-git.png -------------------------------------------------------------------------------- /images/logo-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanUrwin/cookiecutter-git/ae4f73d9db7a270bfdc8c6c581b235b8be2189d8/images/logo-256.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | codecov==2.0.15 2 | cookiecutter==1.6.0 3 | invoke==1.0.0 4 | pytest==3.6.3 5 | pytest-cookies==0.3.0 6 | pytest-cov==2.5.1 7 | pytest-dotenv==0.1.1 8 | requests==2.19.1 9 | requests-mock==1.5.0 10 | -------------------------------------------------------------------------------- /tasks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import ( 3 | absolute_import, 4 | division, 5 | print_function, 6 | unicode_literals, 7 | ) 8 | 9 | from invoke import task 10 | 11 | 12 | @task 13 | def changelog(x): 14 | """ 15 | Generates a new Change Log. 16 | 17 | :param x: invoke.context.Context 18 | """ 19 | x.run("github_changelog_generator -u NathanUrwin -p cookiecutter-git") 20 | 21 | 22 | @task 23 | def clean_build(x): 24 | """ 25 | Removes build artifacts. 26 | 27 | :param x: invoke.context.Context 28 | """ 29 | x.run("rm -frv build/") 30 | x.run("rm -frv dist/") 31 | x.run("rm -frv .eggs/") 32 | x.run("find . -name '*.egg-info' -exec rm -frv {} +") 33 | x.run("find . -name '*.egg' -exec rm -frv {} +") 34 | 35 | 36 | @task 37 | def clean_pyc(x): 38 | """ 39 | Removes python file artifacts. 40 | 41 | :param x: invoke.context.Context 42 | """ 43 | x.run("find . -name '*.pyc' -exec rm -frv {} +") 44 | x.run("find . -name '*.pyo' -exec rm -frv {} +") 45 | x.run("find . -name '__pycache__' -exec rm -frv {} +") 46 | x.run("find . -name '*~' -exec rm -frv {} +") 47 | 48 | 49 | @task 50 | def clean_test(x): 51 | """ 52 | Removes test artifacts. 53 | 54 | :param x: invoke.context.Context 55 | """ 56 | x.run("rm -fr .tox/") 57 | x.run("rm -f .coverage") 58 | x.run("rm -fr htmlcov/") 59 | 60 | 61 | @task(clean_build, clean_pyc, clean_test) 62 | def clean(x): 63 | """ 64 | Removes all build artifacts. 65 | 66 | :param x: invoke.context.Context 67 | """ 68 | x.run("find . -name '*~' -exec rm -frv {} +") 69 | 70 | 71 | @task 72 | def copy_cookie(x): 73 | """ 74 | Copies the cookiecutter-git features into the to-be generated project dir. 75 | 76 | :param x: invoke.context.Context 77 | """ 78 | x.run("cp -afrv cookiecutter.json '{{cookiecutter.repo_slug}}'") 79 | x.run("cp -afrv hooks '{{cookiecutter.repo_slug}}'") 80 | x.run("cp -afrv '{{cookiecutter.repo_slug}}' '{{cookiecutter.repo_slug}}'") 81 | 82 | 83 | @task(name="format") 84 | def format_python(x): 85 | """ 86 | Formats the python source files using the uncompromising black. 87 | 88 | :param x: invoke.context.Context 89 | """ 90 | x.run("black --line-length 79 .") 91 | x.run("git add --all") 92 | 93 | 94 | @task 95 | def tests(x): 96 | """ 97 | Runs the py.test no-stdout-capture, entire-repo-coverage tests. 98 | 99 | :param x: invoke.context.Context 100 | """ 101 | x.run( 102 | "pytest --capture=no --cov-report term:skip-covered --cov-report html --cov=. tests" 103 | ) 104 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NathanUrwin/cookiecutter-git/ae4f73d9db7a270bfdc8c6c581b235b8be2189d8/tests/__init__.py -------------------------------------------------------------------------------- /tests/test_bake_project.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import ( 3 | absolute_import, 4 | division, 5 | print_function, 6 | unicode_literals, 7 | ) 8 | 9 | """ 10 | Cookiecutter-Git PostGenProjectHook Tests. 11 | """ 12 | import base64 13 | from contextlib import contextmanager 14 | import datetime 15 | import json 16 | import os 17 | import shlex 18 | import subprocess 19 | 20 | from cookiecutter.utils import rmtree 21 | from invoke import run 22 | import pytest 23 | 24 | from hooks.post_gen_project import git_disable_gpgsign, PostGenProjectHook 25 | 26 | 27 | @contextmanager 28 | def bake_in_temp_dir(cookies, *args, **kwargs): 29 | """ 30 | Delete the temporal directory that is created when executing the tests. 31 | 32 | https://github.com/audreyr/cookiecutter-pypackage/blob/master/tests/test_bake_project.py#L33 33 | 34 | :param cookies: pytest_cookies.Cookies, cookie to be baked and its temporal files will be removed 35 | """ 36 | with git_disable_gpgsign(): 37 | extra_context = kwargs.pop("extra_context", {}) 38 | extra_context["_testing"] = True 39 | result = cookies.bake(*args, extra_context=extra_context, **kwargs) 40 | try: 41 | yield result 42 | finally: 43 | if result.project: 44 | rmtree(str(result.project)) 45 | 46 | 47 | def mock_request_with_remote_provider_as_bitbucket(mock): 48 | """ 49 | Mocks the Bitbucket API POST request that creates the remote repo. 50 | 51 | :param mock: requests_mock.mocker.Mocker 52 | """ 53 | bitbucket_repos_url = PostGenProjectHook.bitbucket_repos_url_base.format( 54 | "NathanUrwin", "cookiecutter-git-demo" 55 | ) 56 | auth_base64 = PostGenProjectHook.format_basic_auth( 57 | "NathanUrwin", "notmypassword" 58 | ) 59 | request_headers = {"Authorization": "Basic {}".format(auth_base64)} 60 | request_headers.update(PostGenProjectHook.json_header) 61 | mock.post( 62 | bitbucket_repos_url, 63 | json=json.dumps( 64 | { 65 | "name": "cookiecutter-git-demo", 66 | "description": "A cookiecutter-git demonstration :tada:", 67 | "has_issues": True, 68 | "is_private": True, 69 | } 70 | ).encode(), 71 | request_headers=request_headers, 72 | ) 73 | 74 | 75 | def mock_request_with_remote_provider_as_github(mock): 76 | """ 77 | Mocks the GitHub API POST request that creates the remote repo. 78 | 79 | :param mock: requests_mock.mocker.Mocker 80 | """ 81 | auth_base64 = PostGenProjectHook.format_basic_auth( 82 | "NathanUrwin", "notmypwd" 83 | ) 84 | mock.post( 85 | PostGenProjectHook.github_repos_url, 86 | json=json.dumps( 87 | { 88 | "name": "cookiecutter-git-demo", 89 | "description": "A cookiecutter-git demonstration :tada:", 90 | } 91 | ).encode(), 92 | request_headers={"Authorization": "Basic {}".format(auth_base64)}, 93 | ) 94 | 95 | 96 | def test_cookiecutter_git(cookies, requests_mock): 97 | """ 98 | Tests `$ cookiecutter gh:NathanUrwin/cookiecutter-git --no-input`. 99 | 100 | :param cookies: pytest_cookies.Cookies 101 | :param requests_mock: requests_mock.mocker.Mocker 102 | """ 103 | mock_request_with_remote_provider_as_github(requests_mock) 104 | 105 | with bake_in_temp_dir(cookies) as result: 106 | 107 | # https://pytest-cookies.readthedocs.io/en/latest/getting_started/ 108 | assert result.exception is None 109 | assert result.exit_code == 0 110 | assert result.project.basename == "cookiecutter-git-demo" 111 | assert result.project.isdir() 112 | 113 | # PostGenProjectHook._copyright_license 114 | assert not result.project.join("NOTICE").check() 115 | assert "MIT" in result.project.join("LICENSE").read() 116 | assert not result.project.join("LICENSES").check() 117 | 118 | # PostGenProjectHook._make_dirs 119 | assert result.project.join("docs", ".gitkeep").check() 120 | assert result.project.join("src", ".gitkeep").check() 121 | assert result.project.join("tests", ".gitkeep").check() 122 | 123 | # PostGenProjectHook._github_dir 124 | assert result.project.join(".github").check() 125 | 126 | # PostGenProjectHook._git_ignore 127 | assert ( 128 | "windows,macos,linux,git" 129 | in result.project.join(".gitignore").read() 130 | ) 131 | 132 | # PostGenProjectHook._git_init 133 | assert result.project.join(".git").check() 134 | 135 | 136 | def test_cookiecutter_git_with_bitbucket(cookies, requests_mock): 137 | """ 138 | Tests `$ cookiecutter gh:NathanUrwin/cookiecutter-git --no-input remote_provider=bitbucket.org`. 139 | 140 | :param cookies: pytest_cookies.Cookies 141 | :param requests_mock: requests_mock.mocker.Mocker 142 | """ 143 | mock_request_with_remote_provider_as_bitbucket(requests_mock) 144 | 145 | with bake_in_temp_dir( 146 | cookies, extra_context={"remote_provider": "bitbucket.org"} 147 | ) as result: 148 | 149 | # https://pytest-cookies.readthedocs.io/en/latest/getting_started/ 150 | assert result.exception is None 151 | assert result.exit_code == 0 152 | assert result.project.basename == "cookiecutter-git-demo" 153 | assert result.project.isdir() 154 | 155 | # PostGenProjectHook._copyright_license 156 | assert not result.project.join("NOTICE").check() 157 | assert "MIT" in result.project.join("LICENSE").read() 158 | assert not result.project.join("LICENSES").check() 159 | 160 | # PostGenProjectHook._make_dirs 161 | assert result.project.join("docs", ".gitkeep").check() 162 | assert result.project.join("src", ".gitkeep").check() 163 | assert result.project.join("tests", ".gitkeep").check() 164 | 165 | # PostGenProjectHook._github_dir 166 | assert not result.project.join(".github").check() 167 | 168 | # PostGenProjectHook._git_ignore 169 | assert ( 170 | "windows,macos,linux,git" 171 | in result.project.join(".gitignore").read() 172 | ) 173 | 174 | # PostGenProjectHook._git_init 175 | assert result.project.join(".git").check() 176 | 177 | 178 | def test_cookiecutter_git_with_gitlab(cookies): 179 | """ 180 | Tests `$ cookiecutter gh:NathanUrwin/cookiecutter-git --no-input remote_provider=gitlab.com`. 181 | 182 | :param cookies: pytest_cookies.Cookies 183 | """ 184 | with bake_in_temp_dir( 185 | cookies, extra_context={"remote_provider": "gitlab.com"} 186 | ) as result: 187 | 188 | # https://pytest-cookies.readthedocs.io/en/latest/getting_started/ 189 | assert result.exception is None 190 | assert result.exit_code == 0 191 | assert result.project.basename == "cookiecutter-git-demo" 192 | assert result.project.isdir() 193 | 194 | # PostGenProjectHook._copyright_license 195 | assert not result.project.join("NOTICE").check() 196 | assert "MIT" in result.project.join("LICENSE").read() 197 | assert not result.project.join("LICENSES").check() 198 | 199 | # PostGenProjectHook._make_dirs 200 | assert result.project.join("docs", ".gitkeep").check() 201 | assert result.project.join("src", ".gitkeep").check() 202 | assert result.project.join("tests", ".gitkeep").check() 203 | 204 | # PostGenProjectHook._github_dir 205 | assert not result.project.join(".github").check() 206 | 207 | # PostGenProjectHook._git_ignore 208 | assert ( 209 | "windows,macos,linux,git" 210 | in result.project.join(".gitignore").read() 211 | ) 212 | 213 | # PostGenProjectHook._git_init 214 | assert result.project.join(".git").check() 215 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | # end_of_line = git 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.py] 12 | indent_size = 4 13 | indent_style = space 14 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | # Bug report 8 | 9 | Create a report to help us improve 10 | 11 | ## Describe the bug 12 | 13 | A clear and concise description of what the bug is. 14 | 15 | ## To Reproduce 16 | 17 | Steps to reproduce the behavior: 18 | 19 | 1. Go to '...' 20 | 2. Click on '....' 21 | 3. Scroll down to '....' 22 | 4. See error 23 | 24 | ## Expected behavior 25 | 26 | A clear and concise description of what you expected to happen. 27 | 28 | ## Screenshots 29 | 30 | If applicable, add screenshots to help explain your problem. 31 | 32 | ## Desktop (please complete the following information): 33 | 34 | - OS: [e.g. iOS] 35 | - Browser [e.g. chrome, safari] 36 | - Version [e.g. 22] 37 | 38 | ## Smartphone (please complete the following information): 39 | 40 | - Device: [e.g. iPhone6] 41 | - OS: [e.g. iOS8.1] 42 | - Browser [e.g. stock browser, safari] 43 | - Version [e.g. 22] 44 | 45 | ## Additional context 46 | 47 | Add any other context about the problem here. 48 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | # Feature request 8 | 9 | Suggest an idea for this project 10 | 11 | ## Is your feature request related to a problem? Please describe 12 | 13 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 14 | 15 | ## Describe the solution you'd like 16 | 17 | A clear and concise description of what you want to happen. 18 | 19 | ## Describe alternatives you've considered 20 | 21 | A clear and concise description of any alternative solutions or features you've considered. 22 | 23 | ## Additional context 24 | 25 | Add any other context or screenshots about the feature request here. 26 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pull request 3 | about: Create a pull request to help us improve 4 | 5 | --- 6 | 7 | # Pull request 8 | 9 | Create a pull request to help us improve 10 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/windows,macos,linux,git 3 | 4 | ### Git ### 5 | *.orig 6 | 7 | ### Linux ### 8 | *~ 9 | 10 | # temporary files which can be created if a process still has a handle open of a deleted file 11 | .fuse_hidden* 12 | 13 | # KDE directory preferences 14 | .directory 15 | 16 | # Linux trash folder which might appear on any partition or disk 17 | .Trash-* 18 | 19 | # .nfs files are created when an open file is removed but is still being accessed 20 | .nfs* 21 | 22 | ### macOS ### 23 | # General 24 | .DS_Store 25 | .AppleDouble 26 | .LSOverride 27 | 28 | # Icon must end with two \r 29 | Icon 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | .com.apple.timemachine.donotpresent 42 | 43 | # Directories potentially created on remote AFP share 44 | .AppleDB 45 | .AppleDesktop 46 | Network Trash Folder 47 | Temporary Items 48 | .apdisk 49 | 50 | ### Windows ### 51 | # Windows thumbnail cache files 52 | Thumbs.db 53 | ehthumbs.db 54 | ehthumbs_vista.db 55 | 56 | # Dump file 57 | *.stackdump 58 | 59 | # Folder config file 60 | [Dd]esktop.ini 61 | 62 | # Recycle Bin used on file shares 63 | $RECYCLE.BIN/ 64 | 65 | # Windows Installer files 66 | *.cab 67 | *.msi 68 | *.msix 69 | *.msm 70 | *.msp 71 | 72 | # Windows shortcuts 73 | *.lnk 74 | 75 | 76 | # End of https://www.gitignore.io/api/windows,macos,linux,git 77 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | ## Core Contributor 4 | 5 | {% if cookiecutter.remote_provider != "none" %}[{{cookiecutter.git_name}}](https://{{cookiecutter.remote_provider}}/{{cookiecutter.remote_username}}) <{{cookiecutter.git_email}}>{% else %}{{cookiecutter.git_name}} <{{cookiecutter.git_email}}>{% endif %} 6 | 7 | ## Contributors 8 | 9 | None yet. [Why not be the first?](CONTRIBUTING.md) 10 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | {% if cookiecutter.code_of_conduct == "contributor_covenant" %}# Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at {{cookiecutter.git_email}}. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | {% else %} 48 | # Code of Conduct 49 | 50 | ## 1. Purpose 51 | 52 | A primary goal of {{cookiecutter.repo_slug}} is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). 53 | 54 | This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. 55 | 56 | We invite all those who participate in {{cookiecutter.repo_slug}} to help us create safe and positive experiences for everyone. 57 | 58 | ## 2. Open Source Citizenship 59 | 60 | A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. 61 | 62 | Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. 63 | 64 | If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. 65 | 66 | ## 3. Expected Behavior 67 | 68 | The following behaviors are expected and requested of all community members: 69 | 70 | * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. 71 | * Exercise consideration and respect in your speech and actions. 72 | * Attempt collaboration before conflict. 73 | * Refrain from demeaning, discriminatory, or harassing behavior and speech. 74 | * Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. 75 | * Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. 76 | 77 | ## 4. Unacceptable Behavior 78 | 79 | The following behaviors are considered harassment and are unacceptable within our community: 80 | 81 | * Violence, threats of violence or violent language directed against another person. 82 | * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. 83 | * Posting or displaying sexually explicit or violent material. 84 | * Posting or threatening to post other people’s personally identifying information ("doxing"). 85 | * Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. 86 | * Inappropriate photography or recording. 87 | * Inappropriate physical contact. You should have someone’s consent before touching them. 88 | * Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. 89 | * Deliberate intimidation, stalking or following (online or in person). 90 | * Advocating for, or encouraging, any of the above behavior. 91 | * Sustained disruption of community events, including talks and presentations. 92 | 93 | ## 5. Consequences of Unacceptable Behavior 94 | 95 | Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. 96 | 97 | Anyone asked to stop unacceptable behavior is expected to comply immediately. 98 | 99 | If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). 100 | 101 | ## 6. Reporting Guidelines 102 | 103 | If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. {{cookiecutter.git_email}}. 104 | 105 | [Reporting Guidelines](http://github.com/NathanUrwin/testing) 106 | 107 | Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. 108 | 109 | ## 7. Addressing Grievances 110 | 111 | If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify {{cookiecutter.copyright_holder}} with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. 112 | 113 | [Policy](http://github.com/NathanUrwin/testing) 114 | 115 | ## 8. Scope 116 | 117 | We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community business. 118 | 119 | This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. 120 | 121 | ## 9. Contact info 122 | 123 | {{cookiecutter.git_email}} 124 | 125 | ## 10. License and attribution 126 | 127 | This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). 128 | 129 | Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). 130 | 131 | Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/){% endif %} 132 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are welcome, and they are greatly appreciated! 4 | 5 | Every little bit helps, and credit will always be given. 6 | 7 | ## Types of Contributions 8 | 9 | ### Bug Reports, Feature Requests, and Feedback 10 | 11 | Create a [new project issue][issue-link]! Try to be as descriptive as possible. 12 | 13 | ### Bug Fixes, New Features and Documentation 14 | 15 | Create a [new merge/pull request][merge-link]! Make sure to follow the guidelines. 16 | 17 | ## Merge/Pull Request Guidelines 18 | 19 | Make sure to have atomic commits and contextual commit messages! 20 | 21 | ["How to Write a Git Commit Message" by Chris Beams.][chris-beams] 22 | 23 | [issue-link]: {% if cookiecutter.remote_provider == "none" %}mailto:{{cookiecutter.git_email}}{% else %}https://{{cookiecutter.remote_provider}}/{{cookiecutter.remote_namespace}}/{{cookiecutter.repo_slug}}/issues/new{% endif %} 24 | [merge-link]: {% if cookiecutter.remote_provider == "none" %}mailto:{{cookiecutter.git_email}}{% else %}https://{{cookiecutter.remote_provider}}/{{cookiecutter.remote_namespace}}/{{cookiecutter.repo_slug}}/{% if cookiecutter.remote_provider == "github.com" %}compare{% elif cookiecutter.remote_provider == "gitlab.com" %}merge_requests/new{% elif cookiecutter.remote_provider == "bitbucket.org" %}pull-requests/new{% endif %}{% endif %} 25 | [chris-beams]: http://chris.beams.io/posts/git-commit/ 26 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/Apache-2.0.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {% now 'utc', '%Y' %} {{cookiecutter.copyright_holder}} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/BSD-2-Clause.txt: -------------------------------------------------------------------------------- 1 | BSD 2-Clause License 2 | 3 | Copyright (c) {% now 'utc', '%Y' %}, {{cookiecutter.copyright_holder}} 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/BSD-3-Clause.txt: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) {% now 'utc', '%Y' %}, {{cookiecutter.copyright_holder}} 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/EPL-1.0.txt: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 1.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial code and documentation 12 | distributed under this Agreement, and 13 | b) in the case of each subsequent Contributor: 14 | i) changes to the Program, and 15 | ii) additions to the Program; 16 | 17 | where such changes and/or additions to the Program originate from and are 18 | distributed by that particular Contributor. A Contribution 'originates' 19 | from a Contributor if it was added to the Program by such Contributor 20 | itself or anyone acting on such Contributor's behalf. Contributions do not 21 | include additions to the Program which: (i) are separate modules of 22 | software distributed in conjunction with the Program under their own 23 | license agreement, and (ii) are not derivative works of the Program. 24 | 25 | "Contributor" means any person or entity that distributes the Program. 26 | 27 | "Licensed Patents" mean patent claims licensable by a Contributor which are 28 | necessarily infringed by the use or sale of its Contribution alone or when 29 | combined with the Program. 30 | 31 | "Program" means the Contributions distributed in accordance with this 32 | Agreement. 33 | 34 | "Recipient" means anyone who receives the Program under this Agreement, 35 | including all Contributors. 36 | 37 | 2. GRANT OF RIGHTS 38 | a) Subject to the terms of this Agreement, each Contributor hereby grants 39 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 40 | reproduce, prepare derivative works of, publicly display, publicly 41 | perform, distribute and sublicense the Contribution of such Contributor, 42 | if any, and such derivative works, in source code and object code form. 43 | b) Subject to the terms of this Agreement, each Contributor hereby grants 44 | Recipient a non-exclusive, worldwide, royalty-free patent license under 45 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 46 | transfer the Contribution of such Contributor, if any, in source code and 47 | object code form. This patent license shall apply to the combination of 48 | the Contribution and the Program if, at the time the Contribution is 49 | added by the Contributor, such addition of the Contribution causes such 50 | combination to be covered by the Licensed Patents. The patent license 51 | shall not apply to any other combinations which include the Contribution. 52 | No hardware per se is licensed hereunder. 53 | c) Recipient understands that although each Contributor grants the licenses 54 | to its Contributions set forth herein, no assurances are provided by any 55 | Contributor that the Program does not infringe the patent or other 56 | intellectual property rights of any other entity. Each Contributor 57 | disclaims any liability to Recipient for claims brought by any other 58 | entity based on infringement of intellectual property rights or 59 | otherwise. As a condition to exercising the rights and licenses granted 60 | hereunder, each Recipient hereby assumes sole responsibility to secure 61 | any other intellectual property rights needed, if any. For example, if a 62 | third party patent license is required to allow Recipient to distribute 63 | the Program, it is Recipient's responsibility to acquire that license 64 | before distributing the Program. 65 | d) Each Contributor represents that to its knowledge it has sufficient 66 | copyright rights in its Contribution, if any, to grant the copyright 67 | license set forth in this Agreement. 68 | 69 | 3. REQUIREMENTS 70 | 71 | A Contributor may choose to distribute the Program in object code form under 72 | its own license agreement, provided that: 73 | 74 | a) it complies with the terms and conditions of this Agreement; and 75 | b) its license agreement: 76 | i) effectively disclaims on behalf of all Contributors all warranties 77 | and conditions, express and implied, including warranties or 78 | conditions of title and non-infringement, and implied warranties or 79 | conditions of merchantability and fitness for a particular purpose; 80 | ii) effectively excludes on behalf of all Contributors all liability for 81 | damages, including direct, indirect, special, incidental and 82 | consequential damages, such as lost profits; 83 | iii) states that any provisions which differ from this Agreement are 84 | offered by that Contributor alone and not by any other party; and 85 | iv) states that source code for the Program is available from such 86 | Contributor, and informs licensees how to obtain it in a reasonable 87 | manner on or through a medium customarily used for software exchange. 88 | 89 | When the Program is made available in source code form: 90 | 91 | a) it must be made available under this Agreement; and 92 | b) a copy of this Agreement must be included with each copy of the Program. 93 | Contributors may not remove or alter any copyright notices contained 94 | within the Program. 95 | 96 | Each Contributor must identify itself as the originator of its Contribution, 97 | if 98 | any, in a manner that reasonably allows subsequent Recipients to identify the 99 | originator of the Contribution. 100 | 101 | 4. COMMERCIAL DISTRIBUTION 102 | 103 | Commercial distributors of software may accept certain responsibilities with 104 | respect to end users, business partners and the like. While this license is 105 | intended to facilitate the commercial use of the Program, the Contributor who 106 | includes the Program in a commercial product offering should do so in a manner 107 | which does not create potential liability for other Contributors. Therefore, 108 | if a Contributor includes the Program in a commercial product offering, such 109 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify 110 | every other Contributor ("Indemnified Contributor") against any losses, 111 | damages and costs (collectively "Losses") arising from claims, lawsuits and 112 | other legal actions brought by a third party against the Indemnified 113 | Contributor to the extent caused by the acts or omissions of such Commercial 114 | Contributor in connection with its distribution of the Program in a commercial 115 | product offering. The obligations in this section do not apply to any claims 116 | or Losses relating to any actual or alleged intellectual property 117 | infringement. In order to qualify, an Indemnified Contributor must: 118 | a) promptly notify the Commercial Contributor in writing of such claim, and 119 | b) allow the Commercial Contributor to control, and cooperate with the 120 | Commercial Contributor in, the defense and any related settlement 121 | negotiations. The Indemnified Contributor may participate in any such claim at 122 | its own expense. 123 | 124 | For example, a Contributor might include the Program in a commercial product 125 | offering, Product X. That Contributor is then a Commercial Contributor. If 126 | that Commercial Contributor then makes performance claims, or offers 127 | warranties related to Product X, those performance claims and warranties are 128 | such Commercial Contributor's responsibility alone. Under this section, the 129 | Commercial Contributor would have to defend claims against the other 130 | Contributors related to those performance claims and warranties, and if a 131 | court requires any other Contributor to pay any damages as a result, the 132 | Commercial Contributor must pay those damages. 133 | 134 | 5. NO WARRANTY 135 | 136 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN 137 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 138 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each 140 | Recipient is solely responsible for determining the appropriateness of using 141 | and distributing the Program and assumes all risks associated with its 142 | exercise of rights under this Agreement , including but not limited to the 143 | risks and costs of program errors, compliance with applicable laws, damage to 144 | or loss of data, programs or equipment, and unavailability or interruption of 145 | operations. 146 | 147 | 6. DISCLAIMER OF LIABILITY 148 | 149 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 150 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 151 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION 152 | LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 153 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 154 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 155 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY 156 | OF SUCH DAMAGES. 157 | 158 | 7. GENERAL 159 | 160 | If any provision of this Agreement is invalid or unenforceable under 161 | applicable law, it shall not affect the validity or enforceability of the 162 | remainder of the terms of this Agreement, and without further action by the 163 | parties hereto, such provision shall be reformed to the minimum extent 164 | necessary to make such provision valid and enforceable. 165 | 166 | If Recipient institutes patent litigation against any entity (including a 167 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 168 | (excluding combinations of the Program with other software or hardware) 169 | infringes such Recipient's patent(s), then such Recipient's rights granted 170 | under Section 2(b) shall terminate as of the date such litigation is filed. 171 | 172 | All Recipient's rights under this Agreement shall terminate if it fails to 173 | comply with any of the material terms or conditions of this Agreement and does 174 | not cure such failure in a reasonable period of time after becoming aware of 175 | such noncompliance. If all Recipient's rights under this Agreement terminate, 176 | Recipient agrees to cease use and distribution of the Program as soon as 177 | reasonably practicable. However, Recipient's obligations under this Agreement 178 | and any licenses granted by Recipient relating to the Program shall continue 179 | and survive. 180 | 181 | Everyone is permitted to copy and distribute copies of this Agreement, but in 182 | order to avoid inconsistency the Agreement is copyrighted and may only be 183 | modified in the following manner. The Agreement Steward reserves the right to 184 | publish new versions (including revisions) of this Agreement from time to 185 | time. No one other than the Agreement Steward has the right to modify this 186 | Agreement. The Eclipse Foundation is the initial Agreement Steward. The 187 | Eclipse Foundation may assign the responsibility to serve as the Agreement 188 | Steward to a suitable separate entity. Each new version of the Agreement will 189 | be given a distinguishing version number. The Program (including 190 | Contributions) may always be distributed subject to the version of the 191 | Agreement under which it was received. In addition, after a new version of the 192 | Agreement is published, Contributor may elect to distribute the Program 193 | (including its Contributions) under the new version. Except as expressly 194 | stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 195 | licenses to the intellectual property of any Contributor under this Agreement, 196 | whether expressly, by implication, estoppel or otherwise. All rights in the 197 | Program not expressly granted under this Agreement are reserved. 198 | 199 | This Agreement is governed by the laws of the State of New York and the 200 | intellectual property laws of the United States of America. No party to this 201 | Agreement will bring a legal action under this Agreement more than one year 202 | after the cause of action arose. Each party waives its rights to a jury trial in 203 | any resulting litigation. 204 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/GPL-2.0.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/LGPL-2.1.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 2.1, February 1999 3 | 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | (This is the first released version of the Lesser GPL. It also counts 10 | as the successor of the GNU Library Public License, version 2, hence 11 | the version number 2.1.) 12 | 13 | Preamble 14 | 15 | The licenses for most software are designed to take away your 16 | freedom to share and change it. By contrast, the GNU General Public 17 | Licenses are intended to guarantee your freedom to share and change 18 | free software--to make sure the software is free for all its users. 19 | 20 | This license, the Lesser General Public License, applies to some 21 | specially designated software packages--typically libraries--of the 22 | Free Software Foundation and other authors who decide to use it. You 23 | can use it too, but we suggest you first think carefully about whether 24 | this license or the ordinary General Public License is the better 25 | strategy to use in any particular case, based on the explanations below. 26 | 27 | When we speak of free software, we are referring to freedom of use, 28 | not price. Our General Public Licenses are designed to make sure that 29 | you have the freedom to distribute copies of free software (and charge 30 | for this service if you wish); that you receive source code or can get 31 | it if you want it; that you can change the software and use pieces of 32 | it in new free programs; and that you are informed that you can do 33 | these things. 34 | 35 | To protect your rights, we need to make restrictions that forbid 36 | distributors to deny you these rights or to ask you to surrender these 37 | rights. These restrictions translate to certain responsibilities for 38 | you if you distribute copies of the library or if you modify it. 39 | 40 | For example, if you distribute copies of the library, whether gratis 41 | or for a fee, you must give the recipients all the rights that we gave 42 | you. You must make sure that they, too, receive or can get the source 43 | code. If you link other code with the library, you must provide 44 | complete object files to the recipients, so that they can relink them 45 | with the library after making changes to the library and recompiling 46 | it. And you must show them these terms so they know their rights. 47 | 48 | We protect your rights with a two-step method: (1) we copyright the 49 | library, and (2) we offer you this license, which gives you legal 50 | permission to copy, distribute and/or modify the library. 51 | 52 | To protect each distributor, we want to make it very clear that 53 | there is no warranty for the free library. Also, if the library is 54 | modified by someone else and passed on, the recipients should know 55 | that what they have is not the original version, so that the original 56 | author's reputation will not be affected by problems that might be 57 | introduced by others. 58 | 59 | Finally, software patents pose a constant threat to the existence of 60 | any free program. We wish to make sure that a company cannot 61 | effectively restrict the users of a free program by obtaining a 62 | restrictive license from a patent holder. Therefore, we insist that 63 | any patent license obtained for a version of the library must be 64 | consistent with the full freedom of use specified in this license. 65 | 66 | Most GNU software, including some libraries, is covered by the 67 | ordinary GNU General Public License. This license, the GNU Lesser 68 | General Public License, applies to certain designated libraries, and 69 | is quite different from the ordinary General Public License. We use 70 | this license for certain libraries in order to permit linking those 71 | libraries into non-free programs. 72 | 73 | When a program is linked with a library, whether statically or using 74 | a shared library, the combination of the two is legally speaking a 75 | combined work, a derivative of the original library. The ordinary 76 | General Public License therefore permits such linking only if the 77 | entire combination fits its criteria of freedom. The Lesser General 78 | Public License permits more lax criteria for linking other code with 79 | the library. 80 | 81 | We call this license the "Lesser" General Public License because it 82 | does Less to protect the user's freedom than the ordinary General 83 | Public License. It also provides other free software developers Less 84 | of an advantage over competing non-free programs. These disadvantages 85 | are the reason we use the ordinary General Public License for many 86 | libraries. However, the Lesser license provides advantages in certain 87 | special circumstances. 88 | 89 | For example, on rare occasions, there may be a special need to 90 | encourage the widest possible use of a certain library, so that it becomes 91 | a de-facto standard. To achieve this, non-free programs must be 92 | allowed to use the library. A more frequent case is that a free 93 | library does the same job as widely used non-free libraries. In this 94 | case, there is little to gain by limiting the free library to free 95 | software only, so we use the Lesser General Public License. 96 | 97 | In other cases, permission to use a particular library in non-free 98 | programs enables a greater number of people to use a large body of 99 | free software. For example, permission to use the GNU C Library in 100 | non-free programs enables many more people to use the whole GNU 101 | operating system, as well as its variant, the GNU/Linux operating 102 | system. 103 | 104 | Although the Lesser General Public License is Less protective of the 105 | users' freedom, it does ensure that the user of a program that is 106 | linked with the Library has the freedom and the wherewithal to run 107 | that program using a modified version of the Library. 108 | 109 | The precise terms and conditions for copying, distribution and 110 | modification follow. Pay close attention to the difference between a 111 | "work based on the library" and a "work that uses the library". The 112 | former contains code derived from the library, whereas the latter must 113 | be combined with the library in order to run. 114 | 115 | GNU LESSER GENERAL PUBLIC LICENSE 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 117 | 118 | 0. This License Agreement applies to any software library or other 119 | program which contains a notice placed by the copyright holder or 120 | other authorized party saying it may be distributed under the terms of 121 | this Lesser General Public License (also called "this License"). 122 | Each licensee is addressed as "you". 123 | 124 | A "library" means a collection of software functions and/or data 125 | prepared so as to be conveniently linked with application programs 126 | (which use some of those functions and data) to form executables. 127 | 128 | The "Library", below, refers to any such software library or work 129 | which has been distributed under these terms. A "work based on the 130 | Library" means either the Library or any derivative work under 131 | copyright law: that is to say, a work containing the Library or a 132 | portion of it, either verbatim or with modifications and/or translated 133 | straightforwardly into another language. (Hereinafter, translation is 134 | included without limitation in the term "modification".) 135 | 136 | "Source code" for a work means the preferred form of the work for 137 | making modifications to it. For a library, complete source code means 138 | all the source code for all modules it contains, plus any associated 139 | interface definition files, plus the scripts used to control compilation 140 | and installation of the library. 141 | 142 | Activities other than copying, distribution and modification are not 143 | covered by this License; they are outside its scope. The act of 144 | running a program using the Library is not restricted, and output from 145 | such a program is covered only if its contents constitute a work based 146 | on the Library (independent of the use of the Library in a tool for 147 | writing it). Whether that is true depends on what the Library does 148 | and what the program that uses the Library does. 149 | 150 | 1. You may copy and distribute verbatim copies of the Library's 151 | complete source code as you receive it, in any medium, provided that 152 | you conspicuously and appropriately publish on each copy an 153 | appropriate copyright notice and disclaimer of warranty; keep intact 154 | all the notices that refer to this License and to the absence of any 155 | warranty; and distribute a copy of this License along with the 156 | Library. 157 | 158 | You may charge a fee for the physical act of transferring a copy, 159 | and you may at your option offer warranty protection in exchange for a 160 | fee. 161 | 162 | 2. You may modify your copy or copies of the Library or any portion 163 | of it, thus forming a work based on the Library, and copy and 164 | distribute such modifications or work under the terms of Section 1 165 | above, provided that you also meet all of these conditions: 166 | 167 | a) The modified work must itself be a software library. 168 | 169 | b) You must cause the files modified to carry prominent notices 170 | stating that you changed the files and the date of any change. 171 | 172 | c) You must cause the whole of the work to be licensed at no 173 | charge to all third parties under the terms of this License. 174 | 175 | d) If a facility in the modified Library refers to a function or a 176 | table of data to be supplied by an application program that uses 177 | the facility, other than as an argument passed when the facility 178 | is invoked, then you must make a good faith effort to ensure that, 179 | in the event an application does not supply such function or 180 | table, the facility still operates, and performs whatever part of 181 | its purpose remains meaningful. 182 | 183 | (For example, a function in a library to compute square roots has 184 | a purpose that is entirely well-defined independent of the 185 | application. Therefore, Subsection 2d requires that any 186 | application-supplied function or table used by this function must 187 | be optional: if the application does not supply it, the square 188 | root function must still compute square roots.) 189 | 190 | These requirements apply to the modified work as a whole. If 191 | identifiable sections of that work are not derived from the Library, 192 | and can be reasonably considered independent and separate works in 193 | themselves, then this License, and its terms, do not apply to those 194 | sections when you distribute them as separate works. But when you 195 | distribute the same sections as part of a whole which is a work based 196 | on the Library, the distribution of the whole must be on the terms of 197 | this License, whose permissions for other licensees extend to the 198 | entire whole, and thus to each and every part regardless of who wrote 199 | it. 200 | 201 | Thus, it is not the intent of this section to claim rights or contest 202 | your rights to work written entirely by you; rather, the intent is to 203 | exercise the right to control the distribution of derivative or 204 | collective works based on the Library. 205 | 206 | In addition, mere aggregation of another work not based on the Library 207 | with the Library (or with a work based on the Library) on a volume of 208 | a storage or distribution medium does not bring the other work under 209 | the scope of this License. 210 | 211 | 3. You may opt to apply the terms of the ordinary GNU General Public 212 | License instead of this License to a given copy of the Library. To do 213 | this, you must alter all the notices that refer to this License, so 214 | that they refer to the ordinary GNU General Public License, version 2, 215 | instead of to this License. (If a newer version than version 2 of the 216 | ordinary GNU General Public License has appeared, then you can specify 217 | that version instead if you wish.) Do not make any other change in 218 | these notices. 219 | 220 | Once this change is made in a given copy, it is irreversible for 221 | that copy, so the ordinary GNU General Public License applies to all 222 | subsequent copies and derivative works made from that copy. 223 | 224 | This option is useful when you wish to copy part of the code of 225 | the Library into a program that is not a library. 226 | 227 | 4. You may copy and distribute the Library (or a portion or 228 | derivative of it, under Section 2) in object code or executable form 229 | under the terms of Sections 1 and 2 above provided that you accompany 230 | it with the complete corresponding machine-readable source code, which 231 | must be distributed under the terms of Sections 1 and 2 above on a 232 | medium customarily used for software interchange. 233 | 234 | If distribution of object code is made by offering access to copy 235 | from a designated place, then offering equivalent access to copy the 236 | source code from the same place satisfies the requirement to 237 | distribute the source code, even though third parties are not 238 | compelled to copy the source along with the object code. 239 | 240 | 5. A program that contains no derivative of any portion of the 241 | Library, but is designed to work with the Library by being compiled or 242 | linked with it, is called a "work that uses the Library". Such a 243 | work, in isolation, is not a derivative work of the Library, and 244 | therefore falls outside the scope of this License. 245 | 246 | However, linking a "work that uses the Library" with the Library 247 | creates an executable that is a derivative of the Library (because it 248 | contains portions of the Library), rather than a "work that uses the 249 | library". The executable is therefore covered by this License. 250 | Section 6 states terms for distribution of such executables. 251 | 252 | When a "work that uses the Library" uses material from a header file 253 | that is part of the Library, the object code for the work may be a 254 | derivative work of the Library even though the source code is not. 255 | Whether this is true is especially significant if the work can be 256 | linked without the Library, or if the work is itself a library. The 257 | threshold for this to be true is not precisely defined by law. 258 | 259 | If such an object file uses only numerical parameters, data 260 | structure layouts and accessors, and small macros and small inline 261 | functions (ten lines or less in length), then the use of the object 262 | file is unrestricted, regardless of whether it is legally a derivative 263 | work. (Executables containing this object code plus portions of the 264 | Library will still fall under Section 6.) 265 | 266 | Otherwise, if the work is a derivative of the Library, you may 267 | distribute the object code for the work under the terms of Section 6. 268 | Any executables containing that work also fall under Section 6, 269 | whether or not they are linked directly with the Library itself. 270 | 271 | 6. As an exception to the Sections above, you may also combine or 272 | link a "work that uses the Library" with the Library to produce a 273 | work containing portions of the Library, and distribute that work 274 | under terms of your choice, provided that the terms permit 275 | modification of the work for the customer's own use and reverse 276 | engineering for debugging such modifications. 277 | 278 | You must give prominent notice with each copy of the work that the 279 | Library is used in it and that the Library and its use are covered by 280 | this License. You must supply a copy of this License. If the work 281 | during execution displays copyright notices, you must include the 282 | copyright notice for the Library among them, as well as a reference 283 | directing the user to the copy of this License. Also, you must do one 284 | of these things: 285 | 286 | a) Accompany the work with the complete corresponding 287 | machine-readable source code for the Library including whatever 288 | changes were used in the work (which must be distributed under 289 | Sections 1 and 2 above); and, if the work is an executable linked 290 | with the Library, with the complete machine-readable "work that 291 | uses the Library", as object code and/or source code, so that the 292 | user can modify the Library and then relink to produce a modified 293 | executable containing the modified Library. (It is understood 294 | that the user who changes the contents of definitions files in the 295 | Library will not necessarily be able to recompile the application 296 | to use the modified definitions.) 297 | 298 | b) Use a suitable shared library mechanism for linking with the 299 | Library. A suitable mechanism is one that (1) uses at run time a 300 | copy of the library already present on the user's computer system, 301 | rather than copying library functions into the executable, and (2) 302 | will operate properly with a modified version of the library, if 303 | the user installs one, as long as the modified version is 304 | interface-compatible with the version that the work was made with. 305 | 306 | c) Accompany the work with a written offer, valid for at 307 | least three years, to give the same user the materials 308 | specified in Subsection 6a, above, for a charge no more 309 | than the cost of performing this distribution. 310 | 311 | d) If distribution of the work is made by offering access to copy 312 | from a designated place, offer equivalent access to copy the above 313 | specified materials from the same place. 314 | 315 | e) Verify that the user has already received a copy of these 316 | materials or that you have already sent this user a copy. 317 | 318 | For an executable, the required form of the "work that uses the 319 | Library" must include any data and utility programs needed for 320 | reproducing the executable from it. However, as a special exception, 321 | the materials to be distributed need not include anything that is 322 | normally distributed (in either source or binary form) with the major 323 | components (compiler, kernel, and so on) of the operating system on 324 | which the executable runs, unless that component itself accompanies 325 | the executable. 326 | 327 | It may happen that this requirement contradicts the license 328 | restrictions of other proprietary libraries that do not normally 329 | accompany the operating system. Such a contradiction means you cannot 330 | use both them and the Library together in an executable that you 331 | distribute. 332 | 333 | 7. You may place library facilities that are a work based on the 334 | Library side-by-side in a single library together with other library 335 | facilities not covered by this License, and distribute such a combined 336 | library, provided that the separate distribution of the work based on 337 | the Library and of the other library facilities is otherwise 338 | permitted, and provided that you do these two things: 339 | 340 | a) Accompany the combined library with a copy of the same work 341 | based on the Library, uncombined with any other library 342 | facilities. This must be distributed under the terms of the 343 | Sections above. 344 | 345 | b) Give prominent notice with the combined library of the fact 346 | that part of it is a work based on the Library, and explaining 347 | where to find the accompanying uncombined form of the same work. 348 | 349 | 8. You may not copy, modify, sublicense, link with, or distribute 350 | the Library except as expressly provided under this License. Any 351 | attempt otherwise to copy, modify, sublicense, link with, or 352 | distribute the Library is void, and will automatically terminate your 353 | rights under this License. However, parties who have received copies, 354 | or rights, from you under this License will not have their licenses 355 | terminated so long as such parties remain in full compliance. 356 | 357 | 9. You are not required to accept this License, since you have not 358 | signed it. However, nothing else grants you permission to modify or 359 | distribute the Library or its derivative works. These actions are 360 | prohibited by law if you do not accept this License. Therefore, by 361 | modifying or distributing the Library (or any work based on the 362 | Library), you indicate your acceptance of this License to do so, and 363 | all its terms and conditions for copying, distributing or modifying 364 | the Library or works based on it. 365 | 366 | 10. Each time you redistribute the Library (or any work based on the 367 | Library), the recipient automatically receives a license from the 368 | original licensor to copy, distribute, link with or modify the Library 369 | subject to these terms and conditions. You may not impose any further 370 | restrictions on the recipients' exercise of the rights granted herein. 371 | You are not responsible for enforcing compliance by third parties with 372 | this License. 373 | 374 | 11. If, as a consequence of a court judgment or allegation of patent 375 | infringement or for any other reason (not limited to patent issues), 376 | conditions are imposed on you (whether by court order, agreement or 377 | otherwise) that contradict the conditions of this License, they do not 378 | excuse you from the conditions of this License. If you cannot 379 | distribute so as to satisfy simultaneously your obligations under this 380 | License and any other pertinent obligations, then as a consequence you 381 | may not distribute the Library at all. For example, if a patent 382 | license would not permit royalty-free redistribution of the Library by 383 | all those who receive copies directly or indirectly through you, then 384 | the only way you could satisfy both it and this License would be to 385 | refrain entirely from distribution of the Library. 386 | 387 | If any portion of this section is held invalid or unenforceable under any 388 | particular circumstance, the balance of the section is intended to apply, 389 | and the section as a whole is intended to apply in other circumstances. 390 | 391 | It is not the purpose of this section to induce you to infringe any 392 | patents or other property right claims or to contest validity of any 393 | such claims; this section has the sole purpose of protecting the 394 | integrity of the free software distribution system which is 395 | implemented by public license practices. Many people have made 396 | generous contributions to the wide range of software distributed 397 | through that system in reliance on consistent application of that 398 | system; it is up to the author/donor to decide if he or she is willing 399 | to distribute software through any other system and a licensee cannot 400 | impose that choice. 401 | 402 | This section is intended to make thoroughly clear what is believed to 403 | be a consequence of the rest of this License. 404 | 405 | 12. If the distribution and/or use of the Library is restricted in 406 | certain countries either by patents or by copyrighted interfaces, the 407 | original copyright holder who places the Library under this License may add 408 | an explicit geographical distribution limitation excluding those countries, 409 | so that distribution is permitted only in or among countries not thus 410 | excluded. In such case, this License incorporates the limitation as if 411 | written in the body of this License. 412 | 413 | 13. The Free Software Foundation may publish revised and/or new 414 | versions of the Lesser General Public License from time to time. 415 | Such new versions will be similar in spirit to the present version, 416 | but may differ in detail to address new problems or concerns. 417 | 418 | Each version is given a distinguishing version number. If the Library 419 | specifies a version number of this License which applies to it and 420 | "any later version", you have the option of following the terms and 421 | conditions either of that version or of any later version published by 422 | the Free Software Foundation. If the Library does not specify a 423 | license version number, you may choose any version ever published by 424 | the Free Software Foundation. 425 | 426 | 14. If you wish to incorporate parts of the Library into other free 427 | programs whose distribution conditions are incompatible with these, 428 | write to the author to ask for permission. For software which is 429 | copyrighted by the Free Software Foundation, write to the Free 430 | Software Foundation; we sometimes make exceptions for this. Our 431 | decision will be guided by the two goals of preserving the free status 432 | of all derivatives of our free software and of promoting the sharing 433 | and reuse of software generally. 434 | 435 | NO WARRANTY 436 | 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 446 | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 456 | DAMAGES. 457 | 458 | END OF TERMS AND CONDITIONS 459 | 460 | How to Apply These Terms to Your New Libraries 461 | 462 | If you develop a new library, and you want it to be of the greatest 463 | possible use to the public, we recommend making it free software that 464 | everyone can redistribute and change. You can do so by permitting 465 | redistribution under these terms (or, alternatively, under the terms of the 466 | ordinary General Public License). 467 | 468 | To apply these terms, attach the following notices to the library. It is 469 | safest to attach them to the start of each source file to most effectively 470 | convey the exclusion of warranty; and each file should have at least the 471 | "copyright" line and a pointer to where the full notice is found. 472 | 473 | {description} 474 | Copyright (C) {year} {fullname} 475 | 476 | This library is free software; you can redistribute it and/or 477 | modify it under the terms of the GNU Lesser General Public 478 | License as published by the Free Software Foundation; either 479 | version 2.1 of the License, or (at your option) any later version. 480 | 481 | This library is distributed in the hope that it will be useful, 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 484 | Lesser General Public License for more details. 485 | 486 | You should have received a copy of the GNU Lesser General Public 487 | License along with this library; if not, write to the Free Software 488 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 489 | USA 490 | 491 | Also add information on how to contact you by electronic and paper mail. 492 | 493 | You should also get your employer (if you work as a programmer) or your 494 | school, if any, to sign a "copyright disclaimer" for the library, if 495 | necessary. Here is a sample; alter the names: 496 | 497 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 498 | library `Frob' (a library for tweaking knobs) written by James Random 499 | Hacker. 500 | 501 | {signature of Ty Coon}, 1 April 1990 502 | Ty Coon, President of Vice 503 | 504 | That's all there is to it! 505 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/LGPL-3.0.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/MIT.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) {% now 'utc', '%Y' %} {{cookiecutter.copyright_holder}} 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/MPL-2.0.txt: -------------------------------------------------------------------------------- 1 | Mozilla Public License Version 2.0 2 | ================================== 3 | 4 | 1. Definitions 5 | -------------- 6 | 7 | 1.1. "Contributor" 8 | means each individual or legal entity that creates, contributes to 9 | the creation of, or owns Covered Software. 10 | 11 | 1.2. "Contributor Version" 12 | means the combination of the Contributions of others (if any) used 13 | by a Contributor and that particular Contributor's Contribution. 14 | 15 | 1.3. "Contribution" 16 | means Covered Software of a particular Contributor. 17 | 18 | 1.4. "Covered Software" 19 | means Source Code Form to which the initial Contributor has attached 20 | the notice in Exhibit A, the Executable Form of such Source Code 21 | Form, and Modifications of such Source Code Form, in each case 22 | including portions thereof. 23 | 24 | 1.5. "Incompatible With Secondary Licenses" 25 | means 26 | 27 | (a) that the initial Contributor has attached the notice described 28 | in Exhibit B to the Covered Software; or 29 | 30 | (b) that the Covered Software was made available under the terms of 31 | version 1.1 or earlier of the License, but not also under the 32 | terms of a Secondary License. 33 | 34 | 1.6. "Executable Form" 35 | means any form of the work other than Source Code Form. 36 | 37 | 1.7. "Larger Work" 38 | means a work that combines Covered Software with other material, in 39 | a separate file or files, that is not Covered Software. 40 | 41 | 1.8. "License" 42 | means this document. 43 | 44 | 1.9. "Licensable" 45 | means having the right to grant, to the maximum extent possible, 46 | whether at the time of the initial grant or subsequently, any and 47 | all of the rights conveyed by this License. 48 | 49 | 1.10. "Modifications" 50 | means any of the following: 51 | 52 | (a) any file in Source Code Form that results from an addition to, 53 | deletion from, or modification of the contents of Covered 54 | Software; or 55 | 56 | (b) any new file in Source Code Form that contains any Covered 57 | Software. 58 | 59 | 1.11. "Patent Claims" of a Contributor 60 | means any patent claim(s), including without limitation, method, 61 | process, and apparatus claims, in any patent Licensable by such 62 | Contributor that would be infringed, but for the grant of the 63 | License, by the making, using, selling, offering for sale, having 64 | made, import, or transfer of either its Contributions or its 65 | Contributor Version. 66 | 67 | 1.12. "Secondary License" 68 | means either the GNU General Public License, Version 2.0, the GNU 69 | Lesser General Public License, Version 2.1, the GNU Affero General 70 | Public License, Version 3.0, or any later versions of those 71 | licenses. 72 | 73 | 1.13. "Source Code Form" 74 | means the form of the work preferred for making modifications. 75 | 76 | 1.14. "You" (or "Your") 77 | means an individual or a legal entity exercising rights under this 78 | License. For legal entities, "You" includes any entity that 79 | controls, is controlled by, or is under common control with You. For 80 | purposes of this definition, "control" means (a) the power, direct 81 | or indirect, to cause the direction or management of such entity, 82 | whether by contract or otherwise, or (b) ownership of more than 83 | fifty percent (50%) of the outstanding shares or beneficial 84 | ownership of such entity. 85 | 86 | 2. License Grants and Conditions 87 | -------------------------------- 88 | 89 | 2.1. Grants 90 | 91 | Each Contributor hereby grants You a world-wide, royalty-free, 92 | non-exclusive license: 93 | 94 | (a) under intellectual property rights (other than patent or trademark) 95 | Licensable by such Contributor to use, reproduce, make available, 96 | modify, display, perform, distribute, and otherwise exploit its 97 | Contributions, either on an unmodified basis, with Modifications, or 98 | as part of a Larger Work; and 99 | 100 | (b) under Patent Claims of such Contributor to make, use, sell, offer 101 | for sale, have made, import, and otherwise transfer either its 102 | Contributions or its Contributor Version. 103 | 104 | 2.2. Effective Date 105 | 106 | The licenses granted in Section 2.1 with respect to any Contribution 107 | become effective for each Contribution on the date the Contributor first 108 | distributes such Contribution. 109 | 110 | 2.3. Limitations on Grant Scope 111 | 112 | The licenses granted in this Section 2 are the only rights granted under 113 | this License. No additional rights or licenses will be implied from the 114 | distribution or licensing of Covered Software under this License. 115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 116 | Contributor: 117 | 118 | (a) for any code that a Contributor has removed from Covered Software; 119 | or 120 | 121 | (b) for infringements caused by: (i) Your and any other third party's 122 | modifications of Covered Software, or (ii) the combination of its 123 | Contributions with other software (except as part of its Contributor 124 | Version); or 125 | 126 | (c) under Patent Claims infringed by Covered Software in the absence of 127 | its Contributions. 128 | 129 | This License does not grant any rights in the trademarks, service marks, 130 | or logos of any Contributor (except as may be necessary to comply with 131 | the notice requirements in Section 3.4). 132 | 133 | 2.4. Subsequent Licenses 134 | 135 | No Contributor makes additional grants as a result of Your choice to 136 | distribute the Covered Software under a subsequent version of this 137 | License (see Section 10.2) or under the terms of a Secondary License (if 138 | permitted under the terms of Section 3.3). 139 | 140 | 2.5. Representation 141 | 142 | Each Contributor represents that the Contributor believes its 143 | Contributions are its original creation(s) or it has sufficient rights 144 | to grant the rights to its Contributions conveyed by this License. 145 | 146 | 2.6. Fair Use 147 | 148 | This License is not intended to limit any rights You have under 149 | applicable copyright doctrines of fair use, fair dealing, or other 150 | equivalents. 151 | 152 | 2.7. Conditions 153 | 154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 155 | in Section 2.1. 156 | 157 | 3. Responsibilities 158 | ------------------- 159 | 160 | 3.1. Distribution of Source Form 161 | 162 | All distribution of Covered Software in Source Code Form, including any 163 | Modifications that You create or to which You contribute, must be under 164 | the terms of this License. You must inform recipients that the Source 165 | Code Form of the Covered Software is governed by the terms of this 166 | License, and how they can obtain a copy of this License. You may not 167 | attempt to alter or restrict the recipients' rights in the Source Code 168 | Form. 169 | 170 | 3.2. Distribution of Executable Form 171 | 172 | If You distribute Covered Software in Executable Form then: 173 | 174 | (a) such Covered Software must also be made available in Source Code 175 | Form, as described in Section 3.1, and You must inform recipients of 176 | the Executable Form how they can obtain a copy of such Source Code 177 | Form by reasonable means in a timely manner, at a charge no more 178 | than the cost of distribution to the recipient; and 179 | 180 | (b) You may distribute such Executable Form under the terms of this 181 | License, or sublicense it under different terms, provided that the 182 | license for the Executable Form does not attempt to limit or alter 183 | the recipients' rights in the Source Code Form under this License. 184 | 185 | 3.3. Distribution of a Larger Work 186 | 187 | You may create and distribute a Larger Work under terms of Your choice, 188 | provided that You also comply with the requirements of this License for 189 | the Covered Software. If the Larger Work is a combination of Covered 190 | Software with a work governed by one or more Secondary Licenses, and the 191 | Covered Software is not Incompatible With Secondary Licenses, this 192 | License permits You to additionally distribute such Covered Software 193 | under the terms of such Secondary License(s), so that the recipient of 194 | the Larger Work may, at their option, further distribute the Covered 195 | Software under the terms of either this License or such Secondary 196 | License(s). 197 | 198 | 3.4. Notices 199 | 200 | You may not remove or alter the substance of any license notices 201 | (including copyright notices, patent notices, disclaimers of warranty, 202 | or limitations of liability) contained within the Source Code Form of 203 | the Covered Software, except that You may alter any license notices to 204 | the extent required to remedy known factual inaccuracies. 205 | 206 | 3.5. Application of Additional Terms 207 | 208 | You may choose to offer, and to charge a fee for, warranty, support, 209 | indemnity or liability obligations to one or more recipients of Covered 210 | Software. However, You may do so only on Your own behalf, and not on 211 | behalf of any Contributor. You must make it absolutely clear that any 212 | such warranty, support, indemnity, or liability obligation is offered by 213 | You alone, and You hereby agree to indemnify every Contributor for any 214 | liability incurred by such Contributor as a result of warranty, support, 215 | indemnity or liability terms You offer. You may include additional 216 | disclaimers of warranty and limitations of liability specific to any 217 | jurisdiction. 218 | 219 | 4. Inability to Comply Due to Statute or Regulation 220 | --------------------------------------------------- 221 | 222 | If it is impossible for You to comply with any of the terms of this 223 | License with respect to some or all of the Covered Software due to 224 | statute, judicial order, or regulation then You must: (a) comply with 225 | the terms of this License to the maximum extent possible; and (b) 226 | describe the limitations and the code they affect. Such description must 227 | be placed in a text file included with all distributions of the Covered 228 | Software under this License. Except to the extent prohibited by statute 229 | or regulation, such description must be sufficiently detailed for a 230 | recipient of ordinary skill to be able to understand it. 231 | 232 | 5. Termination 233 | -------------- 234 | 235 | 5.1. The rights granted under this License will terminate automatically 236 | if You fail to comply with any of its terms. However, if You become 237 | compliant, then the rights granted under this License from a particular 238 | Contributor are reinstated (a) provisionally, unless and until such 239 | Contributor explicitly and finally terminates Your grants, and (b) on an 240 | ongoing basis, if such Contributor fails to notify You of the 241 | non-compliance by some reasonable means prior to 60 days after You have 242 | come back into compliance. Moreover, Your grants from a particular 243 | Contributor are reinstated on an ongoing basis if such Contributor 244 | notifies You of the non-compliance by some reasonable means, this is the 245 | first time You have received notice of non-compliance with this License 246 | from such Contributor, and You become compliant prior to 30 days after 247 | Your receipt of the notice. 248 | 249 | 5.2. If You initiate litigation against any entity by asserting a patent 250 | infringement claim (excluding declaratory judgment actions, 251 | counter-claims, and cross-claims) alleging that a Contributor Version 252 | directly or indirectly infringes any patent, then the rights granted to 253 | You by any and all Contributors for the Covered Software under Section 254 | 2.1 of this License shall terminate. 255 | 256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 257 | end user license agreements (excluding distributors and resellers) which 258 | have been validly granted by You or Your distributors under this License 259 | prior to termination shall survive termination. 260 | 261 | ************************************************************************ 262 | * * 263 | * 6. Disclaimer of Warranty * 264 | * ------------------------- * 265 | * * 266 | * Covered Software is provided under this License on an "as is" * 267 | * basis, without warranty of any kind, either expressed, implied, or * 268 | * statutory, including, without limitation, warranties that the * 269 | * Covered Software is free of defects, merchantable, fit for a * 270 | * particular purpose or non-infringing. The entire risk as to the * 271 | * quality and performance of the Covered Software is with You. * 272 | * Should any Covered Software prove defective in any respect, You * 273 | * (not any Contributor) assume the cost of any necessary servicing, * 274 | * repair, or correction. This disclaimer of warranty constitutes an * 275 | * essential part of this License. No use of any Covered Software is * 276 | * authorized under this License except under this disclaimer. * 277 | * * 278 | ************************************************************************ 279 | 280 | ************************************************************************ 281 | * * 282 | * 7. Limitation of Liability * 283 | * -------------------------- * 284 | * * 285 | * Under no circumstances and under no legal theory, whether tort * 286 | * (including negligence), contract, or otherwise, shall any * 287 | * Contributor, or anyone who distributes Covered Software as * 288 | * permitted above, be liable to You for any direct, indirect, * 289 | * special, incidental, or consequential damages of any character * 290 | * including, without limitation, damages for lost profits, loss of * 291 | * goodwill, work stoppage, computer failure or malfunction, or any * 292 | * and all other commercial damages or losses, even if such party * 293 | * shall have been informed of the possibility of such damages. This * 294 | * limitation of liability shall not apply to liability for death or * 295 | * personal injury resulting from such party's negligence to the * 296 | * extent applicable law prohibits such limitation. Some * 297 | * jurisdictions do not allow the exclusion or limitation of * 298 | * incidental or consequential damages, so this exclusion and * 299 | * limitation may not apply to You. * 300 | * * 301 | ************************************************************************ 302 | 303 | 8. Litigation 304 | ------------- 305 | 306 | Any litigation relating to this License may be brought only in the 307 | courts of a jurisdiction where the defendant maintains its principal 308 | place of business and such litigation shall be governed by laws of that 309 | jurisdiction, without reference to its conflict-of-law provisions. 310 | Nothing in this Section shall prevent a party's ability to bring 311 | cross-claims or counter-claims. 312 | 313 | 9. Miscellaneous 314 | ---------------- 315 | 316 | This License represents the complete agreement concerning the subject 317 | matter hereof. If any provision of this License is held to be 318 | unenforceable, such provision shall be reformed only to the extent 319 | necessary to make it enforceable. Any law or regulation which provides 320 | that the language of a contract shall be construed against the drafter 321 | shall not be used to construe this License against a Contributor. 322 | 323 | 10. Versions of the License 324 | --------------------------- 325 | 326 | 10.1. New Versions 327 | 328 | Mozilla Foundation is the license steward. Except as provided in Section 329 | 10.3, no one other than the license steward has the right to modify or 330 | publish new versions of this License. Each version will be given a 331 | distinguishing version number. 332 | 333 | 10.2. Effect of New Versions 334 | 335 | You may distribute the Covered Software under the terms of the version 336 | of the License under which You originally received the Covered Software, 337 | or under the terms of any subsequent version published by the license 338 | steward. 339 | 340 | 10.3. Modified Versions 341 | 342 | If you create software not governed by this License, and you want to 343 | create a new license for such software, you may create and use a 344 | modified version of this License if you rename the license and remove 345 | any references to the name of the license steward (except to note that 346 | such modified license differs from this License). 347 | 348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 349 | Licenses 350 | 351 | If You choose to distribute Source Code Form that is Incompatible With 352 | Secondary Licenses under the terms of this version of the License, the 353 | notice described in Exhibit B of this License must be attached. 354 | 355 | Exhibit A - Source Code Form License Notice 356 | ------------------------------------------- 357 | 358 | This Source Code Form is subject to the terms of the Mozilla Public 359 | License, v. 2.0. If a copy of the MPL was not distributed with this 360 | file, You can obtain one at http://mozilla.org/MPL/2.0/. 361 | 362 | If it is not possible or desirable to put the notice in a particular 363 | file, then You may include the notice in a location (such as a LICENSE 364 | file in a relevant directory) where a recipient would be likely to look 365 | for such a notice. 366 | 367 | You may add additional accurate notices of copyright ownership. 368 | 369 | Exhibit B - "Incompatible With Secondary Licenses" Notice 370 | --------------------------------------------------------- 371 | 372 | This Source Code Form is "Incompatible With Secondary Licenses", as 373 | defined by the Mozilla Public License, v. 2.0. 374 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/LICENSES/Unlicense.txt: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/NOTICE: -------------------------------------------------------------------------------- 1 | Apache License, Version 2.0 2 | Copyright {% now 'utc', '%Y' %} The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/README.md: -------------------------------------------------------------------------------- 1 | # {{cookiecutter.repo_slug}} 2 | 3 | [![Tagged Release](https://img.shields.io/badge/release-v0-blue.svg?longCache=true)](CHANGELOG.md) 4 | [![Development Status](https://img.shields.io/badge/status-planning-lightgrey.svg?longCache=true)](ROADMAP.md) 5 | [![Build Status](https://img.shields.io/badge/build-unknown-lightgrey.svg?longCache=true)](https://travis-ci.org) 6 | [![Build Status](https://img.shields.io/badge/build-pending-lightgrey.svg?longCache=true)](https://www.appveyor.com) 7 | [![Build Coverage](https://img.shields.io/badge/coverage-0%25-lightgrey.svg?longCache=true)](https://codecov.io) 8 | 9 | > {{cookiecutter.repo_tagline}} 10 | 11 | {{cookiecutter.repo_summary}} 12 | 13 | _**Note:** This project was initially created by [cookiecutter-git](https://github.com/NathanUrwin/cookiecutter-git)!_ :cookie: 14 | 15 | ## Table of Contents 16 | 17 | - [Table of Contents](#table-of-contents) 18 | - [Features](#features) 19 | - [Requirements](#requirements) 20 | - [Installation](#installation) 21 | - [Usage](#usage) 22 | - [Development](#development) 23 | - [Future](#future) 24 | - [History](#history) 25 | - [Community](#community) 26 | - [Credits](#credits) 27 | - [License](#license) 28 | 29 | ## Features 30 | 31 | ## Requirements 32 | 33 | ## Installation 34 | 35 | ## Usage 36 | 37 | ## Development 38 | 39 | See [CONTRIBUTING](CONTRIBUTING.md) 40 | 41 | ### Future 42 | 43 | See [ROADMAP](ROADMAP.md) 44 | 45 | ### History 46 | 47 | See [CHANGELOG](CHANGELOG.md) 48 | 49 | ### Community 50 | 51 | See [CODE OF CONDUCT](CODE_OF_CONDUCT.md) 52 | 53 | ## Credits 54 | 55 | See [AUTHORS](AUTHORS.md) 56 | 57 | ## License 58 | 59 | See [LICENSE](LICENSE){% if cookiecutter.copyright_license == "Apache-2.0" %}, [NOTICE](NOTICE){% endif %} 60 | -------------------------------------------------------------------------------- /{{cookiecutter.repo_slug}}/ROADMAP.md: -------------------------------------------------------------------------------- 1 | # Road Map 2 | 3 | ## Development Status 4 | 5 | - [x] ![Development Status](https://img.shields.io/badge/status-planning-lightgrey.svg?longCache=true) 6 | - [ ] ![Development Status](https://img.shields.io/badge/status-pre--alpha-red.svg?longCache=true) 7 | - [ ] ![Development Status](https://img.shields.io/badge/status-alpha-yellow.svg?longCache=true) 8 | - [ ] ![Development Status](https://img.shields.io/badge/status-beta-brightgreen.svg?longCache=true) 9 | - [ ] ![Development Status](https://img.shields.io/badge/status-stable-blue.svg?longCache=true) 10 | - [ ] ![Development Status](https://img.shields.io/badge/status-mature-8A2BE2.svg?longCache=true) 11 | - [ ] ![Development Status](https://img.shields.io/badge/status-inactive-lightgrey.svg?longCache=true) 12 | 13 | ## Project Milestones 14 | 15 | - [ ] Release Version 0.1.0 (Pre-Alpha) 16 | - [ ] Release Version 0.x.0 (Alpha) 17 | - [ ] Release Version 0.x.0 (Beta) 18 | - [ ] Release Version 1.0.0 (Stable) 19 | - [ ] Release Version x.0.0 (Mature) 20 | --------------------------------------------------------------------------------