tox-envfile 0.0.4__tar.gz → 0.0.6__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/cookiecutter.json +8 -3
  2. tox-envfile-0.0.4/.cookiecutter/includes/README.md → tox_envfile-0.0.6/.cookiecutter/includes/README/head.md +0 -1
  3. tox_envfile-0.0.6/.cookiecutter/includes/README/tail.md +39 -0
  4. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/workflows/ci.yml +32 -10
  5. tox_envfile-0.0.6/.github/workflows/slack.yml +18 -0
  6. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.gitignore +2 -1
  7. tox_envfile-0.0.6/.python-version +5 -0
  8. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/Makefile +35 -8
  9. tox_envfile-0.0.6/PKG-INFO +206 -0
  10. tox_envfile-0.0.6/README.md +191 -0
  11. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/bin/make_python +2 -2
  12. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/bin/make_template +1 -1
  13. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/pyproject.toml +30 -3
  14. tox_envfile-0.0.6/src/tox_envfile/__init__.py +1 -0
  15. tox_envfile-0.0.6/src/tox_envfile.egg-info/PKG-INFO +206 -0
  16. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/SOURCES.txt +6 -6
  17. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/pyproject.toml +2 -2
  18. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tox.ini +22 -7
  19. tox-envfile-0.0.4/.python-version +0 -3
  20. tox-envfile-0.0.4/HACKING.md +0 -102
  21. tox-envfile-0.0.4/INSTALL.md +0 -11
  22. tox-envfile-0.0.4/PKG-INFO +0 -70
  23. tox-envfile-0.0.4/README.md +0 -56
  24. tox-envfile-0.0.4/src/tox_envfile/__init__.py +0 -1
  25. tox-envfile-0.0.4/src/tox_envfile.egg-info/PKG-INFO +0 -70
  26. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/setuptools/entry_points +0 -0
  27. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/setuptools/install_requires +0 -0
  28. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/tox/deps +0 -0
  29. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/dependabot.yml +0 -0
  30. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/workflows/pypi.yml +0 -0
  31. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/LICENSE +0 -0
  32. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/setup.cfg +0 -0
  33. /tox-envfile-0.0.4/src/tox_envfile/main.py → /tox_envfile-0.0.6/src/tox_envfile/plugin.py +0 -0
  34. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/dependency_links.txt +0 -0
  35. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/entry_points.txt +0 -0
  36. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/requires.txt +0 -0
  37. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/top_level.txt +0 -0
  38. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/__init__.py +0 -0
  39. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/functional/__init__.py +0 -0
  40. /tox-envfile-0.0.4/tests/functional/tox_envfile_test.py → /tox_envfile-0.0.6/tests/functional/sanity_test.py +0 -0
  41. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/unit/__init__.py +0 -0
  42. {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/unit/tox_envfile/__init__.py +0 -0
  43. /tox-envfile-0.0.4/tests/unit/tox_envfile/main_test.py → /tox_envfile-0.0.6/tests/unit/tox_envfile/plugin_test.py +0 -0
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "template": "https://github.com/hypothesis/cookiecutters",
3
3
  "directory": "pypackage",
4
- "ignore": ["INSTALL.md"],
4
+ "ignore": [
5
+ "src/tox_envfile/core.py",
6
+ "tests/unit/tox_envfile/core_test.py"
7
+ ],
5
8
  "extra_context": {
6
9
  "name": "tox-envfile",
7
10
  "package_name": "tox_envfile",
8
11
  "slug": "tox-envfile",
9
12
  "short_description": "Load env files in your tox envs.",
10
- "python_versions": "3.10.4, 3.9.12, 3.8.13",
13
+ "python_versions": "3.12.4, 3.11.9, 3.10.14, 3.9.19, 3.8.19",
11
14
  "github_owner": "hypothesis",
12
15
  "copyright_holder": "Hypothesis",
13
16
  "public": "yes",
@@ -15,6 +18,8 @@
15
18
  "dependabot_pip_interval": "monthly",
16
19
  "__entry_point": "tox-envfile",
17
20
  "__github_url": "https://github.com/hypothesis/tox-envfile",
18
- "__pypi_url": "https://pypi.org/project/tox-envfile"
21
+ "__pypi_url": "https://pypi.org/project/tox-envfile",
22
+ "__copyright_year": "2022",
23
+ "pypi": "yes"
19
24
  }
20
25
  }
@@ -1,4 +1,3 @@
1
-
2
1
  tox-envfile reads environment variables from a file named `.devdata.env` in the
3
2
  same directory as your `tox.ini` file and adds them to the environment that tox
4
3
  runs your commands in.
@@ -0,0 +1,39 @@
1
+ Testing Manually
2
+ ----------------
3
+
4
+ To test it manually you can install your local development copy of
5
+ `tox-envfile` into the local development environment of another tox-using
6
+ project such as
7
+ [cookiecutter-pypackage-test](https://github.com/hypothesis/cookiecutter-pypackage-test):
8
+
9
+ 1. Install a local development copy of `cookiecutter-pypackage-test` in a temporary directory:
10
+
11
+ ```terminal
12
+ git clone https://github.com/hypothesis/cookiecutter-pypackage-test.git /tmp/cookiecutter-pypackage-test
13
+ ```
14
+
15
+ 2. Run `cookiecutter-pypackage-test`'s `make sure` command to make sure that
16
+ everything is working and to trigger tox to create its `.tox/.tox`
17
+ venv:
18
+
19
+ ```terminal
20
+ make --directory "/tmp/cookiecutter-pypackage-test" sure
21
+ ```
22
+
23
+ 3. Uninstall the production copy of `tox-envfile` from `cookiecutter-pypackage-test`'s `.tox/.tox` venv:
24
+
25
+ ```terminal
26
+ /tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip uninstall tox-envfile
27
+ ```
28
+
29
+ 4. Install your local development copy of `tox-envfile` into `cookiecutter-pypackage-test`'s `.tox/.tox` venv:
30
+
31
+ ```terminal
32
+ /tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip install -e .
33
+ ```
34
+
35
+ 5. Now `cookiecutter-pypackage-test` commands will use your local development copy of `tox-envfile`:
36
+
37
+ ```terminal
38
+ make --directory "/tmp/cookiecutter-pypackage-test" test
39
+ ```
@@ -1,7 +1,17 @@
1
1
  name: CI
2
2
  on:
3
3
  push:
4
+ paths-ignore:
5
+ - '.cookiecutter/*'
6
+ - '.github/dependabot.yml'
7
+ - 'bin/make_python'
8
+ - 'bin/make_template'
9
+ - 'docs/*'
10
+ - '**/.gitignore'
11
+ - 'LICENSE'
12
+ - '*.md'
4
13
  workflow_dispatch:
14
+ workflow_call:
5
15
  schedule:
6
16
  - cron: '0 1 * * *'
7
17
  jobs:
@@ -12,8 +22,8 @@ jobs:
12
22
  - name: Install Python
13
23
  uses: actions/setup-python@v4
14
24
  with:
15
- python-version: '3.10'
16
- - run: python -m pip install tox
25
+ python-version: '3.12'
26
+ - run: python -m pip install 'tox<4'
17
27
  - run: tox -e checkformatting
18
28
  Lint:
19
29
  runs-on: ubuntu-latest
@@ -22,14 +32,24 @@ jobs:
22
32
  - name: Install Python
23
33
  uses: actions/setup-python@v4
24
34
  with:
25
- python-version: '3.10'
26
- - run: python -m pip install tox
35
+ python-version: '3.12'
36
+ - run: python -m pip install 'tox<4'
27
37
  - run: tox -e lint
38
+ Typecheck:
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v3
42
+ - name: Install Python
43
+ uses: actions/setup-python@v4
44
+ with:
45
+ python-version: '3.12'
46
+ - run: python -m pip install 'tox<4'
47
+ - run: tox -e typecheck
28
48
  Tests:
29
49
  runs-on: ubuntu-latest
30
50
  strategy:
31
51
  matrix:
32
- python-version: ['3.10', '3.9', '3.8']
52
+ python-version: ['3.12', '3.11', '3.10', '3.9', '3.8']
33
53
  name: Unit tests with Python ${{ matrix.python-version }}
34
54
  steps:
35
55
  - uses: actions/checkout@v3
@@ -37,8 +57,10 @@ jobs:
37
57
  uses: actions/setup-python@v4
38
58
  with:
39
59
  python-version: ${{ matrix.python-version }}
40
- - run: python -m pip install tox
60
+ - run: python -m pip install 'tox<4'
41
61
  - run: tox -e tests
62
+ env:
63
+ COVERAGE_FILE: .coverage.${{ matrix.python-version }}
42
64
  - name: Upload coverage file
43
65
  uses: actions/upload-artifact@v3
44
66
  with:
@@ -52,18 +74,18 @@ jobs:
52
74
  - name: Install Python
53
75
  uses: actions/setup-python@v4
54
76
  with:
55
- python-version: '3.10'
77
+ python-version: '3.12'
56
78
  - name: Download coverage files
57
79
  uses: actions/download-artifact@v3
58
80
  with:
59
81
  name: coverage
60
- - run: python -m pip install tox
82
+ - run: python -m pip install 'tox<4'
61
83
  - run: tox -e coverage
62
84
  Functests:
63
85
  runs-on: ubuntu-latest
64
86
  strategy:
65
87
  matrix:
66
- python-version: ['3.10', '3.9', '3.8']
88
+ python-version: ['3.12', '3.11', '3.10', '3.9', '3.8']
67
89
  name: Functional tests with Python ${{ matrix.python-version }}
68
90
  steps:
69
91
  - uses: actions/checkout@v3
@@ -71,5 +93,5 @@ jobs:
71
93
  uses: actions/setup-python@v4
72
94
  with:
73
95
  python-version: ${{ matrix.python-version }}
74
- - run: python -m pip install tox
96
+ - run: python -m pip install 'tox<4'
75
97
  - run: tox -e functests
@@ -0,0 +1,18 @@
1
+ name: Slack
2
+ on:
3
+ workflow_run:
4
+ workflows: [CI]
5
+ types: [completed]
6
+ branches: [main]
7
+ jobs:
8
+ on-failure:
9
+ runs-on: ubuntu-latest
10
+ if: ${{ github.event.workflow_run.conclusion == 'failure' }}
11
+ steps:
12
+ - name: Post to Slack
13
+ uses: slackapi/slack-github-action@v1.24.0
14
+ with:
15
+ channel-id: 'C4K6M7P5E'
16
+ slack-message: "A workflow run failed\n*Repo:* `${{ github.event.repository.full_name }}` (${{ github.event.repository.html_url }})\n*Workflow:* ${{ github.event.workflow.name }} (${{ github.event.workflow.html_url }})\n*Branch:* `${{ github.event.workflow_run.head_branch }}`\n*Commit:* `${{ github.event.workflow_run.head_commit.id }}`\n*Run:* ${{ github.event.workflow_run.html_url }}\n*Conclusion:* ${{ github.event.workflow_run.conclusion }}"
17
+ env:
18
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
@@ -9,4 +9,5 @@ yarn-error.log
9
9
  supervisord.log
10
10
  supervisord.pid
11
11
  .DS_Store
12
- .devdata.env
12
+ .devdata*
13
+ .eslintcache
@@ -0,0 +1,5 @@
1
+ 3.12.4
2
+ 3.11.9
3
+ 3.10.14
4
+ 3.9.19
5
+ 3.8.19
@@ -4,6 +4,10 @@ comma := ,
4
4
  help = help::; @echo $$$$(tput bold)$(strip $(1)):$$$$(tput sgr0) $(strip $(2))
5
5
  $(call help,make help,print this help message)
6
6
 
7
+ .PHONY: services
8
+
9
+ .PHONY: devdata
10
+
7
11
  .PHONY: shell
8
12
  $(call help,make shell,"launch a Python shell in this project's virtualenv")
9
13
  shell: python
@@ -14,6 +18,11 @@ $(call help,make lint,"lint the code and print any warnings")
14
18
  lint: python
15
19
  @pyenv exec tox -qe lint
16
20
 
21
+ .PHONY: typecheck
22
+ $(call help,make typecheck,"type check the code and print any warnings")
23
+ typecheck: python
24
+ @pyenv exec tox -qe typecheck
25
+
17
26
  .PHONY: format
18
27
  $(call help,make format,"format the code")
19
28
  format: python
@@ -25,33 +34,50 @@ checkformatting: python
25
34
  @pyenv exec tox -qe checkformatting
26
35
 
27
36
  .PHONY: test
28
- $(call help,make test,"run the unit tests in Python 3.10")
29
- coverage: test
37
+ $(call help,make test,"run the unit tests in Python 3.12")
30
38
  test: python
31
39
  @pyenv exec tox -qe tests
32
40
 
41
+ .PHONY: test-py311
42
+ $(call help,make test-py311,"run the unit tests in Python 3.11")
43
+ test-py311: python
44
+ @pyenv exec tox -qe py311-tests
45
+
46
+ .PHONY: test-py310
47
+ $(call help,make test-py310,"run the unit tests in Python 3.10")
48
+ test-py310: python
49
+ @pyenv exec tox -qe py310-tests
50
+
33
51
  .PHONY: test-py39
34
52
  $(call help,make test-py39,"run the unit tests in Python 3.9")
35
- coverage: test-py39
36
53
  test-py39: python
37
54
  @pyenv exec tox -qe py39-tests
38
55
 
39
56
  .PHONY: test-py38
40
57
  $(call help,make test-py38,"run the unit tests in Python 3.8")
41
- coverage: test-py38
42
58
  test-py38: python
43
59
  @pyenv exec tox -qe py38-tests
44
60
 
45
61
  .PHONY: coverage
46
62
  $(call help,make coverage,"run the tests and print the coverage report")
47
63
  coverage: python
48
- @pyenv exec tox -qe coverage
64
+ @pyenv exec tox --parallel -qe 'tests,py{311,310,39,38}-tests,coverage'
49
65
 
50
66
  .PHONY: functests
51
- $(call help,make functests,"run the functional tests in Python 3.10")
67
+ $(call help,make functests,"run the functional tests in Python 3.12")
52
68
  functests: python
53
69
  @pyenv exec tox -qe functests
54
70
 
71
+ .PHONY: functests-py311
72
+ $(call help,make functests-py311,"run the functional tests in Python 3.11")
73
+ functests-py311: python
74
+ @pyenv exec tox -qe py311-functests
75
+
76
+ .PHONY: functests-py310
77
+ $(call help,make functests-py310,"run the functional tests in Python 3.10")
78
+ functests-py310: python
79
+ @pyenv exec tox -qe py310-functests
80
+
55
81
  .PHONY: functests-py39
56
82
  $(call help,make functests-py39,"run the functional tests in Python 3.9")
57
83
  functests-py39: python
@@ -64,8 +90,9 @@ functests-py38: python
64
90
 
65
91
  .PHONY: sure
66
92
  $(call help,make sure,"make sure that the formatting$(comma) linting and tests all pass")
93
+ sure: python
67
94
  sure:
68
- @pyenv exec tox --parallel -qe 'checkformatting,lint,tests,py{39,38}-tests,coverage,functests,py{39,38}-functests'
95
+ @pyenv exec tox --parallel -qe 'checkformatting,lint,typecheck,tests,py{311,310,39,38}-tests,coverage,functests,py{311,310,39,38}-functests'
69
96
 
70
97
  .PHONY: template
71
98
  $(call help,make template,"update from the latest cookiecutter template")
@@ -75,7 +102,7 @@ template: python
75
102
  .PHONY: clean
76
103
  $(call help,make clean,"delete temporary files etc")
77
104
  clean:
78
- @rm -rf build dist .tox
105
+ @rm -rf build dist .tox .coverage coverage .eslintcache node_modules supervisord.log supervisord.pid yarn-error.log
79
106
  @find . -path '*/__pycache__*' -delete
80
107
  @find . -path '*.egg-info*' -delete
81
108
 
@@ -0,0 +1,206 @@
1
+ Metadata-Version: 2.1
2
+ Name: tox-envfile
3
+ Version: 0.0.6
4
+ Summary: Load env files in your tox envs.
5
+ Home-page: https://github.com/hypothesis/tox-envfile
6
+ Project-URL: Bug Tracker, https://github.com/hypothesis/tox-envfile/issues
7
+ Project-URL: Changelog, https://github.com/hypothesis/tox-envfile/releases
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Intended Audience :: Developers
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: python-dotenv
15
+
16
+ <a href="https://github.com/hypothesis/tox-envfile/actions/workflows/ci.yml?query=branch%3Amain"><img src="https://img.shields.io/github/actions/workflow/status/hypothesis/tox-envfile/ci.yml?branch=main"></a>
17
+ <a href="https://pypi.org/project/tox-envfile"><img src="https://img.shields.io/pypi/v/tox-envfile"></a>
18
+ <a><img src="https://img.shields.io/badge/python-3.12 | 3.11 | 3.10 | 3.9 | 3.8-success"></a>
19
+ <a href="https://github.com/hypothesis/tox-envfile/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-BSD--2--Clause-success"></a>
20
+ <a href="https://github.com/hypothesis/cookiecutters/tree/main/pypackage"><img src="https://img.shields.io/badge/cookiecutter-pypackage-success"></a>
21
+ <a href="https://black.readthedocs.io/en/stable/"><img src="https://img.shields.io/badge/code%20style-black-000000"></a>
22
+
23
+ # tox-envfile
24
+
25
+ Load env files in your tox envs.
26
+
27
+ tox-envfile reads environment variables from a file named `.devdata.env` in the
28
+ same directory as your `tox.ini` file and adds them to the environment that tox
29
+ runs your commands in.
30
+
31
+ This is a pretty dumb plugin for now: all of the environment variables in
32
+ `.devdata.env` will be loaded into the environment for every tox env that you
33
+ run, unconditionally. Any existing envvars with conflicting names will be
34
+ overwritten. Only a single environment file is supported and it must be named
35
+ `.devdata.env`.
36
+
37
+ env File Format
38
+ ---------------
39
+
40
+ [python-dotenv](https://saurabh-kumar.com/python-dotenv/) is used for the env file parsing.
41
+
42
+ The `.devdata.env` file should be an env file with contents that look like
43
+ this:
44
+
45
+ ```shell
46
+ # a comment that will be ignored.
47
+ REDIS_ADDRESS=localhost:6379
48
+ MEANING_OF_LIFE=42
49
+ MULTILINE_VAR="hello\nworld"
50
+ ```
51
+
52
+ Or like this:
53
+
54
+ ```shell
55
+ export S3_BUCKET=YOURS3BUCKET
56
+ export SECRET_KEY=YOURSECRETKEYGOESHERE
57
+ ```
58
+
59
+ POSIX variable expansion works, using variables from the environment or from
60
+ earlier lines in the env file:
61
+
62
+ ```shell
63
+ CONFIG_PATH=${HOME}/.config/foo
64
+ DOMAIN=example.org
65
+ EMAIL=admin@${DOMAIN}
66
+ ```
67
+
68
+ ## Setting up Your tox-envfile Development Environment
69
+
70
+ First you'll need to install:
71
+
72
+ * [Git](https://git-scm.com/).
73
+ On Ubuntu: `sudo apt install git`, on macOS: `brew install git`.
74
+ * [GNU Make](https://www.gnu.org/software/make/).
75
+ This is probably already installed, run `make --version` to check.
76
+ * [pyenv](https://github.com/pyenv/pyenv).
77
+ Follow the instructions in pyenv's README to install it.
78
+ The **Homebrew** method works best on macOS.
79
+ The **Basic GitHub Checkout** method works best on Ubuntu.
80
+ You _don't_ need to set up pyenv's shell integration ("shims"), you can
81
+ [use pyenv without shims](https://github.com/pyenv/pyenv#using-pyenv-without-shims).
82
+
83
+ Then to set up your development environment:
84
+
85
+ ```terminal
86
+ git clone https://github.com/hypothesis/tox-envfile.git
87
+ cd tox-envfile
88
+ make help
89
+ ```
90
+
91
+ ## Releasing a New Version of the Project
92
+
93
+ 1. First, to get PyPI publishing working you need to go to:
94
+ <https://github.com/organizations/hypothesis/settings/secrets/actions/PYPI_TOKEN>
95
+ and add tox-envfile to the `PYPI_TOKEN` secret's selected
96
+ repositories.
97
+
98
+ 2. Now that the tox-envfile project has access to the `PYPI_TOKEN` secret
99
+ you can release a new version by just [creating a new GitHub release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
100
+ Publishing a new GitHub release will automatically trigger
101
+ [a GitHub Actions workflow](.github/workflows/pypi.yml)
102
+ that will build the new version of your Python package and upload it to
103
+ <https://pypi.org/project/tox-envfile>.
104
+
105
+ ## Changing the Project's Python Versions
106
+
107
+ To change what versions of Python the project uses:
108
+
109
+ 1. Change the Python versions in the
110
+ [cookiecutter.json](.cookiecutter/cookiecutter.json) file. For example:
111
+
112
+ ```json
113
+ "python_versions": "3.10.4, 3.9.12",
114
+ ```
115
+
116
+ 2. Re-run the cookiecutter template:
117
+
118
+ ```terminal
119
+ make template
120
+ ```
121
+
122
+ 3. Commit everything to git and send a pull request
123
+
124
+ ## Changing the Project's Python Dependencies
125
+
126
+ To change the production dependencies in the `setup.cfg` file:
127
+
128
+ 1. Change the dependencies in the [`.cookiecutter/includes/setuptools/install_requires`](.cookiecutter/includes/setuptools/install_requires) file.
129
+ If this file doesn't exist yet create it and add some dependencies to it.
130
+ For example:
131
+
132
+ ```
133
+ pyramid
134
+ sqlalchemy
135
+ celery
136
+ ```
137
+
138
+ 2. Re-run the cookiecutter template:
139
+
140
+ ```terminal
141
+ make template
142
+ ```
143
+
144
+ 3. Commit everything to git and send a pull request
145
+
146
+ To change the project's formatting, linting and test dependencies:
147
+
148
+ 1. Change the dependencies in the [`.cookiecutter/includes/tox/deps`](.cookiecutter/includes/tox/deps) file.
149
+ If this file doesn't exist yet create it and add some dependencies to it.
150
+ Use tox's [factor-conditional settings](https://tox.wiki/en/latest/config.html#factors-and-factor-conditional-settings)
151
+ to limit which environment(s) each dependency is used in.
152
+ For example:
153
+
154
+ ```
155
+ lint: flake8,
156
+ format: autopep8,
157
+ lint,tests: pytest-faker,
158
+ ```
159
+
160
+ 2. Re-run the cookiecutter template:
161
+
162
+ ```terminal
163
+ make template
164
+ ```
165
+
166
+ 3. Commit everything to git and send a pull request
167
+
168
+ Testing Manually
169
+ ----------------
170
+
171
+ To test it manually you can install your local development copy of
172
+ `tox-envfile` into the local development environment of another tox-using
173
+ project such as
174
+ [cookiecutter-pypackage-test](https://github.com/hypothesis/cookiecutter-pypackage-test):
175
+
176
+ 1. Install a local development copy of `cookiecutter-pypackage-test` in a temporary directory:
177
+
178
+ ```terminal
179
+ git clone https://github.com/hypothesis/cookiecutter-pypackage-test.git /tmp/cookiecutter-pypackage-test
180
+ ```
181
+
182
+ 2. Run `cookiecutter-pypackage-test`'s `make sure` command to make sure that
183
+ everything is working and to trigger tox to create its `.tox/.tox`
184
+ venv:
185
+
186
+ ```terminal
187
+ make --directory "/tmp/cookiecutter-pypackage-test" sure
188
+ ```
189
+
190
+ 3. Uninstall the production copy of `tox-envfile` from `cookiecutter-pypackage-test`'s `.tox/.tox` venv:
191
+
192
+ ```terminal
193
+ /tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip uninstall tox-envfile
194
+ ```
195
+
196
+ 4. Install your local development copy of `tox-envfile` into `cookiecutter-pypackage-test`'s `.tox/.tox` venv:
197
+
198
+ ```terminal
199
+ /tmp/cookiecutter-pypackage-test/.tox/.tox/bin/pip install -e .
200
+ ```
201
+
202
+ 5. Now `cookiecutter-pypackage-test` commands will use your local development copy of `tox-envfile`:
203
+
204
+ ```terminal
205
+ make --directory "/tmp/cookiecutter-pypackage-test" test
206
+ ```