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.
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/cookiecutter.json +8 -3
- tox-envfile-0.0.4/.cookiecutter/includes/README.md → tox_envfile-0.0.6/.cookiecutter/includes/README/head.md +0 -1
- tox_envfile-0.0.6/.cookiecutter/includes/README/tail.md +39 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/workflows/ci.yml +32 -10
- tox_envfile-0.0.6/.github/workflows/slack.yml +18 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.gitignore +2 -1
- tox_envfile-0.0.6/.python-version +5 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/Makefile +35 -8
- tox_envfile-0.0.6/PKG-INFO +206 -0
- tox_envfile-0.0.6/README.md +191 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/bin/make_python +2 -2
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/bin/make_template +1 -1
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/pyproject.toml +30 -3
- tox_envfile-0.0.6/src/tox_envfile/__init__.py +1 -0
- tox_envfile-0.0.6/src/tox_envfile.egg-info/PKG-INFO +206 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/SOURCES.txt +6 -6
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/pyproject.toml +2 -2
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tox.ini +22 -7
- tox-envfile-0.0.4/.python-version +0 -3
- tox-envfile-0.0.4/HACKING.md +0 -102
- tox-envfile-0.0.4/INSTALL.md +0 -11
- tox-envfile-0.0.4/PKG-INFO +0 -70
- tox-envfile-0.0.4/README.md +0 -56
- tox-envfile-0.0.4/src/tox_envfile/__init__.py +0 -1
- tox-envfile-0.0.4/src/tox_envfile.egg-info/PKG-INFO +0 -70
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/setuptools/entry_points +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/setuptools/install_requires +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.cookiecutter/includes/tox/deps +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/dependabot.yml +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/.github/workflows/pypi.yml +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/LICENSE +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/setup.cfg +0 -0
- /tox-envfile-0.0.4/src/tox_envfile/main.py → /tox_envfile-0.0.6/src/tox_envfile/plugin.py +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/dependency_links.txt +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/entry_points.txt +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/requires.txt +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/src/tox_envfile.egg-info/top_level.txt +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/__init__.py +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/functional/__init__.py +0 -0
- /tox-envfile-0.0.4/tests/functional/tox_envfile_test.py → /tox_envfile-0.0.6/tests/functional/sanity_test.py +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/unit/__init__.py +0 -0
- {tox-envfile-0.0.4 → tox_envfile-0.0.6}/tests/unit/tox_envfile/__init__.py +0 -0
- /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": [
|
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.
|
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
|
}
|
@@ -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.
|
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.
|
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.
|
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 }}
|
@@ -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.
|
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.
|
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
|
+
```
|