mirror of
https://github.com/ChristianLight/tutor.git
synced 2025-01-05 23:20:40 +00:00
Fix urllib3 dependency error on installation of tutor
requests depends on urllib3<1.26.0, while urllib3==1.26.0 was just released. We need to introduce a constraint on urllib3 to avoid the following error when running `pip install -e`: pkg_resources.ContextualVersionConflict: (urllib3 1.26.0 (./venv/lib/python3.7/site-packages), Requirement.parse('urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1'), {'requests'}) We will be able to remove this constraint once requests becomes compatible with urllib3==1.26.0. To test this change just run `pip install -e tutor` and then run a dummy command, such as `tutor local stop`.
This commit is contained in:
parent
6c4d9619fd
commit
ad858cd699
@ -4,6 +4,7 @@ Note: Breaking changes between versions are indicated by "💥".
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- [Bugfix] Fix dependency error during `pip install tutor` due to urllib3 incompatibility
|
||||||
- [Bugfix] Fix user ID checking under Windows.
|
- [Bugfix] Fix user ID checking under Windows.
|
||||||
- [Bugfix] Fix template rendering for Windows users.
|
- [Bugfix] Fix template rendering for Windows users.
|
||||||
- [Improvement] Switch to `bcrypt` for htpasswd password generation, for better portability on Windows.
|
- [Improvement] Switch to `bcrypt` for htpasswd password generation, for better portability on Windows.
|
||||||
|
@ -5,3 +5,6 @@ pycryptodome
|
|||||||
jinja2>=2.9
|
jinja2>=2.9
|
||||||
kubernetes
|
kubernetes
|
||||||
pyyaml>=4.2b1
|
pyyaml>=4.2b1
|
||||||
|
|
||||||
|
# Installing urllib3==1.26.0 causes compatibility errors with requests==2.24.0
|
||||||
|
urllib3<1.26.0
|
@ -6,11 +6,11 @@
|
|||||||
#
|
#
|
||||||
appdirs==1.4.4 # via -r requirements/base.in
|
appdirs==1.4.4 # via -r requirements/base.in
|
||||||
cachetools==4.1.1 # via google-auth
|
cachetools==4.1.1 # via google-auth
|
||||||
certifi==2020.6.20 # via kubernetes, requests
|
certifi==2020.11.8 # via kubernetes, requests
|
||||||
chardet==3.0.4 # via requests
|
chardet==3.0.4 # via requests
|
||||||
click-repl==0.1.6 # via -r requirements/base.in
|
click-repl==0.1.6 # via -r requirements/base.in
|
||||||
click==7.1.2 # via -r requirements/base.in, click-repl
|
click==7.1.2 # via -r requirements/base.in, click-repl
|
||||||
google-auth==1.22.1 # via kubernetes
|
google-auth==1.23.0 # via kubernetes
|
||||||
idna==2.10 # via requests
|
idna==2.10 # via requests
|
||||||
jinja2==2.11.2 # via -r requirements/base.in
|
jinja2==2.11.2 # via -r requirements/base.in
|
||||||
kubernetes==12.0.0 # via -r requirements/base.in
|
kubernetes==12.0.0 # via -r requirements/base.in
|
||||||
@ -19,14 +19,14 @@ oauthlib==3.1.0 # via requests-oauthlib
|
|||||||
prompt-toolkit==3.0.8 # via click-repl
|
prompt-toolkit==3.0.8 # via click-repl
|
||||||
pyasn1-modules==0.2.8 # via google-auth
|
pyasn1-modules==0.2.8 # via google-auth
|
||||||
pyasn1==0.4.8 # via pyasn1-modules, rsa
|
pyasn1==0.4.8 # via pyasn1-modules, rsa
|
||||||
pycryptodome==3.9.8 # via -r requirements/base.in
|
pycryptodome==3.9.9 # via -r requirements/base.in
|
||||||
python-dateutil==2.8.1 # via kubernetes
|
python-dateutil==2.8.1 # via kubernetes
|
||||||
pyyaml==5.3.1 # via -r requirements/base.in, kubernetes
|
pyyaml==5.3.1 # via -r requirements/base.in, kubernetes
|
||||||
requests-oauthlib==1.3.0 # via kubernetes
|
requests-oauthlib==1.3.0 # via kubernetes
|
||||||
requests==2.24.0 # via kubernetes, requests-oauthlib
|
requests==2.24.0 # via kubernetes, requests-oauthlib
|
||||||
rsa==4.6 # via google-auth
|
rsa==4.6 # via google-auth
|
||||||
six==1.15.0 # via click-repl, google-auth, kubernetes, python-dateutil, websocket-client
|
six==1.15.0 # via click-repl, google-auth, kubernetes, python-dateutil, websocket-client
|
||||||
urllib3==1.25.11 # via kubernetes, requests
|
urllib3==1.25.11 # via -r requirements/base.in, kubernetes, requests
|
||||||
wcwidth==0.2.5 # via prompt-toolkit
|
wcwidth==0.2.5 # via prompt-toolkit
|
||||||
websocket-client==0.57.0 # via kubernetes
|
websocket-client==0.57.0 # via kubernetes
|
||||||
|
|
||||||
|
@ -10,21 +10,21 @@ astroid==2.4.2 # via pylint
|
|||||||
black==20.8b1 # via -r requirements/dev.in
|
black==20.8b1 # via -r requirements/dev.in
|
||||||
bleach==3.2.1 # via readme-renderer
|
bleach==3.2.1 # via readme-renderer
|
||||||
cachetools==4.1.1 # via -r requirements/base.txt, google-auth
|
cachetools==4.1.1 # via -r requirements/base.txt, google-auth
|
||||||
certifi==2020.6.20 # via -r requirements/base.txt, kubernetes, requests
|
certifi==2020.11.8 # via -r requirements/base.txt, kubernetes, requests
|
||||||
cffi==1.14.3 # via cryptography
|
cffi==1.14.3 # via cryptography
|
||||||
chardet==3.0.4 # via -r requirements/base.txt, requests
|
chardet==3.0.4 # via -r requirements/base.txt, requests
|
||||||
click-repl==0.1.6 # via -r requirements/base.txt
|
click-repl==0.1.6 # via -r requirements/base.txt
|
||||||
click==7.1.2 # via -r requirements/base.txt, black, click-repl, pip-tools
|
click==7.1.2 # via -r requirements/base.txt, black, click-repl, pip-tools
|
||||||
colorama==0.4.4 # via twine
|
colorama==0.4.4 # via twine
|
||||||
cryptography==3.2 # via secretstorage
|
cryptography==3.2.1 # via secretstorage
|
||||||
docutils==0.16 # via readme-renderer
|
docutils==0.16 # via readme-renderer
|
||||||
google-auth==1.22.1 # via -r requirements/base.txt, kubernetes
|
google-auth==1.23.0 # via -r requirements/base.txt, kubernetes
|
||||||
idna==2.10 # via -r requirements/base.txt, requests
|
idna==2.10 # via -r requirements/base.txt, requests
|
||||||
importlib-metadata==2.0.0 # via keyring, twine
|
importlib-metadata==2.0.0 # via keyring, twine
|
||||||
isort==5.6.4 # via pylint
|
isort==5.6.4 # via pylint
|
||||||
jeepney==0.4.3 # via keyring, secretstorage
|
jeepney==0.5.0 # via keyring, secretstorage
|
||||||
jinja2==2.11.2 # via -r requirements/base.txt
|
jinja2==2.11.2 # via -r requirements/base.txt
|
||||||
keyring==21.4.0 # via twine
|
keyring==21.5.0 # via twine
|
||||||
kubernetes==12.0.0 # via -r requirements/base.txt
|
kubernetes==12.0.0 # via -r requirements/base.txt
|
||||||
lazy-object-proxy==1.4.3 # via astroid
|
lazy-object-proxy==1.4.3 # via astroid
|
||||||
markupsafe==1.1.1 # via -r requirements/base.txt, jinja2
|
markupsafe==1.1.1 # via -r requirements/base.txt, jinja2
|
||||||
@ -32,31 +32,31 @@ mccabe==0.6.1 # via pylint
|
|||||||
mypy-extensions==0.4.3 # via black
|
mypy-extensions==0.4.3 # via black
|
||||||
oauthlib==3.1.0 # via -r requirements/base.txt, requests-oauthlib
|
oauthlib==3.1.0 # via -r requirements/base.txt, requests-oauthlib
|
||||||
packaging==20.4 # via bleach
|
packaging==20.4 # via bleach
|
||||||
pathspec==0.8.0 # via black
|
pathspec==0.8.1 # via black
|
||||||
pip-tools==5.3.1 # via -r requirements/dev.in
|
pip-tools==5.3.1 # via -r requirements/dev.in
|
||||||
pkginfo==1.6.1 # via twine
|
pkginfo==1.6.1 # via twine
|
||||||
prompt-toolkit==3.0.8 # via -r requirements/base.txt, click-repl
|
prompt-toolkit==3.0.8 # via -r requirements/base.txt, click-repl
|
||||||
pyasn1-modules==0.2.8 # via -r requirements/base.txt, google-auth
|
pyasn1-modules==0.2.8 # via -r requirements/base.txt, google-auth
|
||||||
pyasn1==0.4.8 # via -r requirements/base.txt, pyasn1-modules, rsa
|
pyasn1==0.4.8 # via -r requirements/base.txt, pyasn1-modules, rsa
|
||||||
pycparser==2.20 # via cffi
|
pycparser==2.20 # via cffi
|
||||||
pycryptodome==3.9.8 # via -r requirements/base.txt
|
pycryptodome==3.9.9 # via -r requirements/base.txt
|
||||||
pygments==2.7.2 # via readme-renderer
|
pygments==2.7.2 # via readme-renderer
|
||||||
pyinstaller-hooks-contrib==2020.9 # via pyinstaller
|
pyinstaller-hooks-contrib==2020.10 # via pyinstaller
|
||||||
pyinstaller==4.0 # via -r requirements/dev.in
|
pyinstaller==4.0 # via -r requirements/dev.in
|
||||||
pylint==2.6.0 # via -r requirements/dev.in
|
pylint==2.6.0 # via -r requirements/dev.in
|
||||||
pyparsing==2.4.7 # via packaging
|
pyparsing==2.4.7 # via packaging
|
||||||
python-dateutil==2.8.1 # via -r requirements/base.txt, kubernetes
|
python-dateutil==2.8.1 # via -r requirements/base.txt, kubernetes
|
||||||
pyyaml==5.3.1 # via -r requirements/base.txt, kubernetes
|
pyyaml==5.3.1 # via -r requirements/base.txt, kubernetes
|
||||||
readme-renderer==28.0 # via twine
|
readme-renderer==28.0 # via twine
|
||||||
regex==2020.10.23 # via black
|
regex==2020.10.28 # via black
|
||||||
requests-oauthlib==1.3.0 # via -r requirements/base.txt, kubernetes
|
requests-oauthlib==1.3.0 # via -r requirements/base.txt, kubernetes
|
||||||
requests-toolbelt==0.9.1 # via twine
|
requests-toolbelt==0.9.1 # via twine
|
||||||
requests==2.24.0 # via -r requirements/base.txt, kubernetes, requests-oauthlib, requests-toolbelt, twine
|
requests==2.24.0 # via -r requirements/base.txt, kubernetes, requests-oauthlib, requests-toolbelt, twine
|
||||||
rfc3986==1.4.0 # via twine
|
rfc3986==1.4.0 # via twine
|
||||||
rsa==4.6 # via -r requirements/base.txt, google-auth
|
rsa==4.6 # via -r requirements/base.txt, google-auth
|
||||||
secretstorage==3.1.2 # via keyring
|
secretstorage==3.2.0 # via keyring
|
||||||
six==1.15.0 # via -r requirements/base.txt, astroid, bleach, click-repl, cryptography, google-auth, kubernetes, packaging, pip-tools, python-dateutil, readme-renderer, websocket-client
|
six==1.15.0 # via -r requirements/base.txt, astroid, bleach, click-repl, cryptography, google-auth, kubernetes, packaging, pip-tools, python-dateutil, readme-renderer, websocket-client
|
||||||
toml==0.10.1 # via black, pylint
|
toml==0.10.2 # via black, pylint
|
||||||
tqdm==4.51.0 # via twine
|
tqdm==4.51.0 # via twine
|
||||||
twine==3.2.0 # via -r requirements/dev.in
|
twine==3.2.0 # via -r requirements/dev.in
|
||||||
typed-ast==1.4.1 # via astroid, black
|
typed-ast==1.4.1 # via astroid, black
|
||||||
|
@ -8,12 +8,12 @@ alabaster==0.7.12 # via sphinx
|
|||||||
appdirs==1.4.4 # via -r requirements/base.txt
|
appdirs==1.4.4 # via -r requirements/base.txt
|
||||||
babel==2.8.0 # via sphinx
|
babel==2.8.0 # via sphinx
|
||||||
cachetools==4.1.1 # via -r requirements/base.txt, google-auth
|
cachetools==4.1.1 # via -r requirements/base.txt, google-auth
|
||||||
certifi==2020.6.20 # via -r requirements/base.txt, kubernetes, requests
|
certifi==2020.11.8 # via -r requirements/base.txt, kubernetes, requests
|
||||||
chardet==3.0.4 # via -r requirements/base.txt, requests
|
chardet==3.0.4 # via -r requirements/base.txt, requests
|
||||||
click-repl==0.1.6 # via -r requirements/base.txt
|
click-repl==0.1.6 # via -r requirements/base.txt
|
||||||
click==7.1.2 # via -r requirements/base.txt, click-repl
|
click==7.1.2 # via -r requirements/base.txt, click-repl
|
||||||
docutils==0.16 # via sphinx
|
docutils==0.16 # via sphinx
|
||||||
google-auth==1.22.1 # via -r requirements/base.txt, kubernetes
|
google-auth==1.23.0 # via -r requirements/base.txt, kubernetes
|
||||||
idna==2.10 # via -r requirements/base.txt, requests
|
idna==2.10 # via -r requirements/base.txt, requests
|
||||||
imagesize==1.2.0 # via sphinx
|
imagesize==1.2.0 # via sphinx
|
||||||
jinja2==2.11.2 # via -r requirements/base.txt, sphinx
|
jinja2==2.11.2 # via -r requirements/base.txt, sphinx
|
||||||
@ -24,11 +24,11 @@ packaging==20.4 # via sphinx
|
|||||||
prompt-toolkit==3.0.8 # via -r requirements/base.txt, click-repl
|
prompt-toolkit==3.0.8 # via -r requirements/base.txt, click-repl
|
||||||
pyasn1-modules==0.2.8 # via -r requirements/base.txt, google-auth
|
pyasn1-modules==0.2.8 # via -r requirements/base.txt, google-auth
|
||||||
pyasn1==0.4.8 # via -r requirements/base.txt, pyasn1-modules, rsa
|
pyasn1==0.4.8 # via -r requirements/base.txt, pyasn1-modules, rsa
|
||||||
pycryptodome==3.9.8 # via -r requirements/base.txt
|
pycryptodome==3.9.9 # via -r requirements/base.txt
|
||||||
pygments==2.7.2 # via sphinx
|
pygments==2.7.2 # via sphinx
|
||||||
pyparsing==2.4.7 # via packaging
|
pyparsing==2.4.7 # via packaging
|
||||||
python-dateutil==2.8.1 # via -r requirements/base.txt, kubernetes
|
python-dateutil==2.8.1 # via -r requirements/base.txt, kubernetes
|
||||||
pytz==2020.1 # via babel
|
pytz==2020.4 # via babel
|
||||||
pyyaml==5.3.1 # via -r requirements/base.txt, kubernetes
|
pyyaml==5.3.1 # via -r requirements/base.txt, kubernetes
|
||||||
requests-oauthlib==1.3.0 # via -r requirements/base.txt, kubernetes
|
requests-oauthlib==1.3.0 # via -r requirements/base.txt, kubernetes
|
||||||
requests==2.24.0 # via -r requirements/base.txt, kubernetes, requests-oauthlib, sphinx
|
requests==2.24.0 # via -r requirements/base.txt, kubernetes, requests-oauthlib, sphinx
|
||||||
@ -36,7 +36,7 @@ rsa==4.6 # via -r requirements/base.txt, google-auth
|
|||||||
six==1.15.0 # via -r requirements/base.txt, click-repl, google-auth, kubernetes, packaging, python-dateutil, websocket-client
|
six==1.15.0 # via -r requirements/base.txt, click-repl, google-auth, kubernetes, packaging, python-dateutil, websocket-client
|
||||||
snowballstemmer==2.0.0 # via sphinx
|
snowballstemmer==2.0.0 # via sphinx
|
||||||
sphinx-rtd-theme==0.5.0 # via -r requirements/docs.in
|
sphinx-rtd-theme==0.5.0 # via -r requirements/docs.in
|
||||||
sphinx==3.2.1 # via -r requirements/docs.in, sphinx-rtd-theme
|
sphinx==3.3.0 # via -r requirements/docs.in, sphinx-rtd-theme
|
||||||
sphinxcontrib-applehelp==1.0.2 # via sphinx
|
sphinxcontrib-applehelp==1.0.2 # via sphinx
|
||||||
sphinxcontrib-devhelp==1.0.2 # via sphinx
|
sphinxcontrib-devhelp==1.0.2 # via sphinx
|
||||||
sphinxcontrib-htmlhelp==1.0.3 # via sphinx
|
sphinxcontrib-htmlhelp==1.0.3 # via sphinx
|
||||||
|
44
setup.py
44
setup.py
@ -2,23 +2,39 @@ import io
|
|||||||
import os
|
import os
|
||||||
from setuptools import find_packages, setup
|
from setuptools import find_packages, setup
|
||||||
|
|
||||||
here = os.path.abspath(os.path.dirname(__file__))
|
HERE = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
with io.open(os.path.join(here, "README.rst"), "rt", encoding="utf8") as f:
|
|
||||||
readme = f.read()
|
|
||||||
|
|
||||||
about = {}
|
def load_readme():
|
||||||
with io.open(os.path.join(here, "tutor", "__about__.py"), "rt", encoding="utf-8") as f:
|
with io.open(os.path.join(HERE, "README.rst"), "rt", encoding="utf8") as f:
|
||||||
exec(f.read(), about)
|
return f.read()
|
||||||
requirements = []
|
|
||||||
with io.open(
|
|
||||||
os.path.join(here, "requirements", "base.in"), "rt", encoding="utf-8"
|
def load_about():
|
||||||
) as f:
|
about = {}
|
||||||
requirements = [line.strip() for line in f]
|
with io.open(
|
||||||
|
os.path.join(HERE, "tutor", "__about__.py"), "rt", encoding="utf-8"
|
||||||
|
) as f:
|
||||||
|
exec(f.read(), about) # pylint: disable=exec-used
|
||||||
|
return about
|
||||||
|
|
||||||
|
|
||||||
|
def load_requirements():
|
||||||
|
with io.open(
|
||||||
|
os.path.join(HERE, "requirements", "base.in"), "rt", encoding="utf-8"
|
||||||
|
) as f:
|
||||||
|
return [line.strip() for line in f if is_requirement(line)]
|
||||||
|
|
||||||
|
|
||||||
|
def is_requirement(line):
|
||||||
|
return not (line.strip() == "" or line.startswith("#"))
|
||||||
|
|
||||||
|
|
||||||
|
ABOUT = load_about()
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="tutor-openedx",
|
name="tutor-openedx",
|
||||||
version=about["__version__"],
|
version=ABOUT["__version__"],
|
||||||
url="https://docs.tutor.overhang.io/",
|
url="https://docs.tutor.overhang.io/",
|
||||||
project_urls={
|
project_urls={
|
||||||
"Documentation": "https://docs.tutor.overhang.io/",
|
"Documentation": "https://docs.tutor.overhang.io/",
|
||||||
@ -30,12 +46,12 @@ setup(
|
|||||||
author="Overhang.io",
|
author="Overhang.io",
|
||||||
author_email="contact@overhang.io",
|
author_email="contact@overhang.io",
|
||||||
description="The docker-based Open edX distribution designed for peace of mind",
|
description="The docker-based Open edX distribution designed for peace of mind",
|
||||||
long_description=readme,
|
long_description=load_readme(),
|
||||||
long_description_content_type="text/x-rst",
|
long_description_content_type="text/x-rst",
|
||||||
packages=find_packages(exclude=["tests*"]),
|
packages=find_packages(exclude=["tests*"]),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
python_requires=">=3.5",
|
python_requires=">=3.5",
|
||||||
install_requires=requirements,
|
install_requires=load_requirements(),
|
||||||
entry_points={"console_scripts": ["tutor=tutor.commands.cli:main"]},
|
entry_points={"console_scripts": ["tutor=tutor.commands.cli:main"]},
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 5 - Production/Stable",
|
||||||
|
Loading…
Reference in New Issue
Block a user