![Page 1: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/1.jpg)
@HYNEK
MAINTAINING A PYTHON PROJECT WHEN IT’S NOT YOUR JOB
Hynek Schlawack
![Page 2: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/2.jpg)
@HYNEK
pem
doc2dash
argon2-cffi
prometheus-asyncenviron-config
first
Twisted
cryptography
CPython
pyOpenSSL
![Page 3: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/3.jpg)
@HYNEK
REMOVE FRICTION
![Page 4: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/4.jpg)
@HYNEK
![Page 5: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/5.jpg)
@HYNEK
![Page 6: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/6.jpg)
@HYNEK
![Page 7: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/7.jpg)
@HYNEK
FROM IDEA TO PYPI: A PLAY IN 3 ACTS
![Page 8: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/8.jpg)
@HYNEK
ACT 1 DEVELOPMENT
![Page 9: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/9.jpg)
@HYNEK
![Page 10: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/10.jpg)
@HYNEK
![Page 11: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/11.jpg)
@HYNEK
![Page 12: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/12.jpg)
@HYNEK
![Page 13: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/13.jpg)
@HYNEK
.github/CONTRIBUTING.rst
![Page 14: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/14.jpg)
@HYNEK
.github/CONTRIBUTING.rst
.github/CODE_OF_CONDUCT.rst
![Page 15: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/15.jpg)
@HYNEK
![Page 16: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/16.jpg)
@HYNEK
$ pip install -e .[dev]
![Page 17: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/17.jpg)
@HYNEK
$ pip install -e .[dev]
![Page 18: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/18.jpg)
@HYNEK
$ pip install -e .[dev]
![Page 19: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/19.jpg)
@HYNEK
OPTIONAL DEPENDENCIES
![Page 20: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/20.jpg)
@HYNEK
OPTIONAL DEPENDENCIES$ pip install urllib3[brotli,socks]
![Page 21: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/21.jpg)
@HYNEK
OPTIONAL DEPENDENCIES$ pip install urllib3[brotli,socks]setup( # ... extras_require={ "tests": ["pytest", "coverage"] })
![Page 22: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/22.jpg)
@HYNEK
![Page 23: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/23.jpg)
@HYNEK
$ pip install -e .[dev]$ pytest
![Page 24: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/24.jpg)
@HYNEK
$ pip install -e .[dev]$ pytest$ cd docs; make html
![Page 25: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/25.jpg)
@HYNEK
PROBLEMS
![Page 26: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/26.jpg)
@HYNEK
PROBLEMS
1. remember how
![Page 27: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/27.jpg)
@HYNEK
PROBLEMS
1. remember how
2. only 1 Python version
![Page 28: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/28.jpg)
@HYNEK
![Page 29: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/29.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3
tox.ini
![Page 30: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/30.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3[testenv]
tox.ini
![Page 31: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/31.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3[testenv]extras = tests
tox.ini
![Page 32: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/32.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3[testenv]extras = testscommands = pytest {posargs}
tox.ini
![Page 33: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/33.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3[testenv]extras = testscommands = pytest {posargs}
tox.ini
![Page 34: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/34.jpg)
@HYNEK
[tox]envlist = py27,py37,pypy,pypy3[testenv]extras = testscommands = pytest {posargs}
# tox -e py27 -- -x
tox.ini
![Page 35: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/35.jpg)
@HYNEK
LINTING
![Page 36: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/36.jpg)
@HYNEK
flake8
![Page 37: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/37.jpg)
@HYNEK
![Page 38: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/38.jpg)
@HYNEK
![Page 39: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/39.jpg)
@HYNEK
![Page 40: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/40.jpg)
@HYNEK
![Page 41: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/41.jpg)
@HYNEK
![Page 42: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/42.jpg)
@HYNEK
![Page 43: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/43.jpg)
@HYNEK
.pre-commit-config.yaml
![Page 44: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/44.jpg)
@HYNEK
.pre-commit-config.yaml
repos: - repo: https://gitlab.com/pycqa/flake8
![Page 45: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/45.jpg)
@HYNEK
.pre-commit-config.yaml
repos: - repo: https://gitlab.com/pycqa/flake8 rev: 3.7.7
![Page 46: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/46.jpg)
@HYNEK
.pre-commit-config.yaml
repos: - repo: https://gitlab.com/pycqa/flake8 rev: 3.7.7 hooks: - id: flake8
![Page 47: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/47.jpg)
@HYNEK
.pre-commit-config.yaml
repos: - repo: https://gitlab.com/pycqa/flake8 rev: 3.7.7 hooks: - id: flake8 language_version: python3.7
![Page 48: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/48.jpg)
@HYNEK
tox.ini
![Page 49: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/49.jpg)
@HYNEK
[testenv:lint]
tox.ini
![Page 50: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/50.jpg)
@HYNEK
[testenv:lint]deps = pre-commit
tox.ini
![Page 51: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/51.jpg)
@HYNEK
[testenv:lint]deps = pre-commitskip_install = true
tox.ini
![Page 52: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/52.jpg)
@HYNEK
[testenv:lint]deps = pre-commitskip_install = truecommands = pre-commit run --all-files
tox.ini
![Page 53: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/53.jpg)
@HYNEK
tox.ini[testenv:docs]basepython = python3.7extras = docscommands =
![Page 54: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/54.jpg)
@HYNEK
tox.ini[testenv:docs]basepython = python3.7extras = docscommands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
![Page 55: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/55.jpg)
@HYNEK
tox.ini[testenv:docs]basepython = python3.7extras = docscommands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html sphinx-build -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html
![Page 56: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/56.jpg)
@HYNEK
tox.ini[testenv:docs]basepython = python3.7extras = docscommands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html sphinx-build -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html python -m doctest README.rst
![Page 57: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/57.jpg)
@HYNEK
![Page 58: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/58.jpg)
@HYNEK
ACT 2 PULL REQUEST
![Page 59: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/59.jpg)
@HYNEK
.github/PULL_REQUEST_TEMPLATE.md
![Page 60: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/60.jpg)
@HYNEK
![Page 61: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/61.jpg)
@HYNEK
![Page 62: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/62.jpg)
@HYNEK
![Page 63: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/63.jpg)
@HYNEK
#travisAlumns
![Page 64: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/64.jpg)
@HYNEK
![Page 65: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/65.jpg)
@HYNEK
![Page 66: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/66.jpg)
@HYNEK
![Page 67: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/67.jpg)
@HYNEK
![Page 68: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/68.jpg)
@HYNEK
![Page 69: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/69.jpg)
@HYNEK
![Page 70: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/70.jpg)
@HYNEK
![Page 71: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/71.jpg)
@HYNEK
![Page 72: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/72.jpg)
@HYNEK
![Page 73: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/73.jpg)
@HYNEK
ACT 3 RELEASE
![Page 74: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/74.jpg)
@HYNEK
![Page 75: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/75.jpg)
@HYNEK
![Page 76: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/76.jpg)
@HYNEK
__init__.py__version__ = "19.2.0.dev0"
__title__ = "attrs"__description__ = "Classes Without Boilerplate"__url__ = "https://www.attrs.org/"__doc__ = __description__ + " <" + __uri__ + ">"
__author__ = "Hynek Schlawack"__email__ = "[email protected]"
__license__ = "MIT"__copyright__ = "Copyright (c) 2015 Hynek Schlawack"
![Page 77: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/77.jpg)
@HYNEK
__init__.py__version__ = "19.2.0.dev0"
__title__ = "attrs"__description__ = "Classes Without Boilerplate"__url__ = "https://www.attrs.org/"__doc__ = __description__ + " <" + __uri__ + ">"
__author__ = "Hynek Schlawack"__email__ = "[email protected]"
__license__ = "MIT"__copyright__ = "Copyright (c) 2015 Hynek Schlawack"
![Page 78: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/78.jpg)
@HYNEK
![Page 79: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/79.jpg)
@HYNEK
![Page 80: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/80.jpg)
@HYNEK
![Page 81: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/81.jpg)
@HYNEK
![Page 82: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/82.jpg)
@HYNEK
![Page 83: Python Maintenance EP...@HYNEK tox.ini [testenv:docs] basepython = python3.7 extras = docs commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html @HYNEKHYNEK](https://reader035.vdocuments.us/reader035/viewer/2022070814/5f0dfe9e7e708231d43d194e/html5/thumbnails/83.jpg)
@HYNEK
ox.cx/oss @hynek vrmd.de