diff --git a/Makefile b/Makefile index 8501377cd4f3..7a3f218f5371 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,14 @@ # Do things in edx-platform +.PHONY: clean extract_translations help pull_translations push_translations requirements upgrade # Careful with mktemp syntax: it has to work on Mac and Ubuntu, which have differences. PRIVATE_FILES := $(shell mktemp -u /tmp/private_files.XXXXXX) -clean: +help: ## display this help message + @echo "Please use \`make ' where is one of" + @grep '^[a-zA-Z]' $(MAKEFILE_LIST) | sort | awk -F ':.*?## ' 'NF==2 {printf "\033[36m %-25s\033[0m %s\n", $$1, $$2}' + +clean: ## archive and delete most git-ignored files # Remove all the git-ignored stuff, but save and restore things marked # by start-noclean/end-noclean. Include Makefile in the tarball so that # there's always at least one file even if there are no private files. @@ -13,16 +18,13 @@ clean: tar xf $(PRIVATE_FILES) rm $(PRIVATE_FILES) -extract_translations: - # Extract localizable strings from sources +extract_translations: ## extract localizable strings from sources i18n_tool extract -vv -push_translations: - # Push source strings to Transifex for translation +push_translations: ## push source strings to Transifex for translation i18n_tool transifex push -pull_translations: - ## Pull translations from Transifex +pull_translations: ## pull translations from Transifex git clean -fdX conf/locale i18n_tool transifex pull i18n_tool extract @@ -32,3 +34,32 @@ pull_translations: git clean -fdX conf/locale/rtl git clean -fdX conf/locale/eo i18n_tool validate + +requirements: ## install development environment requirements + pip install -qr requirements/edx/development.txt --exists-action w + +upgrade: ## update the pip requirements files to use the latest releases satisfying our constraints + pip install -qr requirements/edx/pip-tools.txt + # Make sure to compile files after any other files they include! + pip-compile --upgrade -o requirements/edx/pip-tools.txt requirements/edx/pip-tools.in + pip-compile --upgrade -o requirements/edx/coverage.txt requirements/edx/coverage.in + pip-compile --upgrade -o requirements/edx/paver.txt requirements/edx/paver.in + pip-compile --upgrade -o requirements/edx-sandbox/shared.txt requirements/edx-sandbox/shared.in + pip-compile --upgrade -o requirements/edx-sandbox/base.txt requirements/edx-sandbox/base.in + pip-compile --upgrade -o requirements/edx/base.txt requirements/edx/base.in + pip-compile --upgrade -o requirements/edx/testing.txt requirements/edx/testing.in + pip-compile --upgrade -o requirements/edx/development.txt requirements/edx/development.in + # Post process all of the files generated above to work around open pip-tools issues + scripts/post-pip-compile.sh \ + requirements/edx/pip-tools.txt \ + requirements/edx/coverage.txt \ + requirements/edx/paver.txt \ + requirements/edx-sandbox/shared.txt \ + requirements/edx-sandbox/base.txt \ + requirements/edx/base.txt \ + requirements/edx/testing.txt \ + requirements/edx/development.txt + # Let tox control the Django version for tests + grep "^django==" requirements/edx/base.txt > requirements/edx/django.txt + sed '/^[dD]jango==/d' requirements/edx/testing.txt > requirements/edx/testing.tmp + mv requirements/edx/testing.tmp requirements/edx/testing.txt diff --git a/circle.yml b/circle.yml index 09fefa5a7481..3b0abb0ec54b 100644 --- a/circle.yml +++ b/circle.yml @@ -12,7 +12,6 @@ dependencies: - npm install - pip install setuptools - - pip install --exists-action w -r requirements/edx/paver.txt # Mirror what paver install_prereqs does. # After a successful build, CircleCI will @@ -20,18 +19,7 @@ dependencies: # the next build will not need to install them # from scratch again. - pip install --exists-action w -r requirements/edx/pre.txt - - pip install --exists-action w -r requirements/edx/github.txt - - pip install --exists-action w -r requirements/edx/local.txt - - # HACK: within base.txt stevedore had a - # dependency on a version range of pbr. - # Install a version which falls within that range. - - pip install --exists-action w pbr==0.9.0 - - pip install --exists-action w -r requirements/edx/django.txt - - pip install --exists-action w -r requirements/edx/base.txt - - pip install --exists-action w -r requirements/edx/paver.txt - pip install --exists-action w -r requirements/edx/testing.txt - - if [ -e requirements/edx/post.txt ]; then pip install --exists-action w -r requirements/edx/post.txt ; fi - pip install coveralls==1.0 diff --git a/common/lib/capa/capa/safe_exec/README.rst b/common/lib/capa/capa/safe_exec/README.rst index 00b81ca15fa3..9a28480caf40 100644 --- a/common/lib/capa/capa/safe_exec/README.rst +++ b/common/lib/capa/capa/safe_exec/README.rst @@ -19,8 +19,6 @@ __ https://github.com/edx/codejail/blob/master/README.rst need to install the requirements from requirements/edx-sandbox:: $ pip install -r requirements/edx-sandbox/base.txt - $ pip install -r requirements/edx-sandbox/local.txt - $ pip install -r requirements/edx-sandbox/post.txt 2. At the instruction to create the AppArmor profile, you'll need a line in the profile for the sandbox packages. is the full path to diff --git a/common/lib/chem/setup.py b/common/lib/chem/setup.py index 9affb3d66502..005836c1f099 100644 --- a/common/lib/chem/setup.py +++ b/common/lib/chem/setup.py @@ -8,6 +8,6 @@ "pyparsing==2.2.0", "numpy==1.6.2", "scipy==0.14.0", - "nltk==3.2.5", + "nltk", ], ) diff --git a/openedx.yaml b/openedx.yaml index 551a97567e63..930f47bea881 100644 --- a/openedx.yaml +++ b/openedx.yaml @@ -3,5 +3,5 @@ nick: edx oeps: {} -openedx-release: {ref: release, requirements: requirements/edx/github.txt} +openedx-release: {ref: release} track-pulls: true diff --git a/openedx/core/djangoapps/user_api/tests/test_views.py b/openedx/core/djangoapps/user_api/tests/test_views.py index 74170807b0c5..357f9ad86115 100644 --- a/openedx/core/djangoapps/user_api/tests/test_views.py +++ b/openedx/core/djangoapps/user_api/tests/test_views.py @@ -2590,7 +2590,8 @@ def _assert_time_zone_is_valid(self, time_zone_info): self.assertIn(time_zone_name, common_timezones_set) self.assertEqual(time_zone_info['description'], get_display_time_zone(time_zone_name)) - @ddt.data((ALL_TIME_ZONES_URI, 436), + # The time zones count may need to change each time we upgrade pytz + @ddt.data((ALL_TIME_ZONES_URI, 439), (COUNTRY_TIME_ZONES_URI, 28)) @ddt.unpack def test_get_basic(self, country_uri, expected_count): diff --git a/pavelib/prereqs.py b/pavelib/prereqs.py index 96dacfa6a7f9..11b85a194a98 100644 --- a/pavelib/prereqs.py +++ b/pavelib/prereqs.py @@ -21,20 +21,10 @@ # If you make any changes to this list you also need to make # a corresponding change to circle.yml, which is how the python # prerequisites are installed for builds on circleci.com -PYTHON_REQ_FILES = [ - 'requirements/edx/pre.txt', - 'requirements/edx/github.txt', - 'requirements/edx/local.txt', - 'requirements/edx/django.txt', - 'requirements/edx/base.txt', - 'requirements/edx/paver.txt', - 'requirements/edx/development.txt', - 'requirements/edx/testing.txt', - 'requirements/edx/post.txt', -] if 'TOXENV' in os.environ: - # Let tox manage the Django version - PYTHON_REQ_FILES.remove('requirements/edx/django.txt') + PYTHON_REQ_FILES = ['requirements/edx/testing.txt'] +else: + PYTHON_REQ_FILES = ['requirements/edx/development.txt'] # Developers can have private requirements, for local copies of github repos, # or favorite debugging tools, etc. diff --git a/pavement.py b/pavement.py index a0f0c59503c4..f13ab8a7aa39 100644 --- a/pavement.py +++ b/pavement.py @@ -6,7 +6,7 @@ # In local dev, we usually don't need to do this, because Python # automatically puts the current working directory on the system path. # In Jenkins, however, we have multiple copies of the edx-platform repo, -# each of which run "pip install -e ." (as part of requirements/edx/local.txt) +# each of which run "pip install -e ." (as part of requirements/edx/local.in) # Until we re-run pip install, the other copies of edx-platform could # take precedence, leading to some very strange results. sys.path.insert(0, os.path.dirname(__file__)) diff --git a/requirements/edx-sandbox/base.in b/requirements/edx-sandbox/base.in new file mode 100644 index 000000000000..39df686604b4 --- /dev/null +++ b/requirements/edx-sandbox/base.in @@ -0,0 +1,11 @@ +# Packages to install in the Python sandbox for secured execution of code provided by course authors. +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files + +-r shared.txt # Dependencies in common with LMS and Studio +matplotlib==1.3.1 # 2D plotting library diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt index 5852d1a74b46..eba6c093a6dd 100644 --- a/requirements/edx-sandbox/base.txt +++ b/requirements/edx-sandbox/base.txt @@ -1,16 +1,33 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! # -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements - -# Pin packaging tools the same as edxapp. Keep them in sync for our sanity. -setuptools==37.0.0 -pip==9.0.1 +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# +-e common/lib/calc +-e common/lib/chem +-e common/lib/sandbox-packages +-e common/lib/symmath +asn1crypto==0.24.0 +backports-abc==0.5 # via tornado +cffi==1.11.5 +cryptography==2.1.4 +enum34==1.1.6 +futures==3.2.0 # via tornado +idna==2.6 +ipaddress==1.0.19 +lxml==3.8.0 +matplotlib==1.3.1 +networkx==1.7 nltk==3.2.5 +nose==1.3.7 # via matplotlib numpy==1.6.2 -networkx==1.7 +pycparser==2.18 +pyparsing==2.0.7 +python-dateutil==2.7.2 # via matplotlib +scipy==0.14.0 +singledispatch==3.4.0.3 # via tornado +six==1.11.0 sympy==0.7.1 -pyparsing==2.2.0 -cryptography==1.9 +tornado==5.0.2 # via matplotlib diff --git a/requirements/edx-sandbox/local.txt b/requirements/edx-sandbox/local.txt index e999a220640a..006a8306f87b 100644 --- a/requirements/edx-sandbox/local.txt +++ b/requirements/edx-sandbox/local.txt @@ -1,13 +1,3 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements - -# Install these packages from the edx-platform working tree -# NOTE: if you change code in these packages, you MUST change the version -# number in its setup.py or the code WILL NOT be installed during deploy. -common/lib/calc -common/lib/chem -common/lib/sandbox-packages -common/lib/symmath +# Placeholder for code which hasn't yet been updated to no longer use this file. +# The requirements which were here have been moved to shared.in, and are now +# incorporated into base.txt diff --git a/requirements/edx-sandbox/post.txt b/requirements/edx-sandbox/post.txt index fa83a3b2d29b..fbc5ec24d6e5 100644 --- a/requirements/edx-sandbox/post.txt +++ b/requirements/edx-sandbox/post.txt @@ -1,11 +1,3 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements - -# Packages to install in the Python sandbox for secured execution. -scipy==0.14.0 -# lxml is also in requirements/edx/base.txt -lxml==3.8.0 -matplotlib==1.3.1 +# Placeholder for code which hasn't yet been updated to no longer use this file. +# The requirements which were here have been moved to shared.in and base.in, +# and are now incorporated into base.txt diff --git a/requirements/edx-sandbox/shared.in b/requirements/edx-sandbox/shared.in new file mode 100644 index 000000000000..401c57505df5 --- /dev/null +++ b/requirements/edx-sandbox/shared.in @@ -0,0 +1,25 @@ +# Core dependencies shared between Python sandboxes for secured execution and edx-platform. +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files + +cryptography==2.1.4 # Implementations of assorted cryptography algorithms +lxml==3.8.0 # XML parser +networkx==1.7 # Utilities for creating, manipulating, and studying network graphs +nltk # Natural language processing; used by the chem package +numpy==1.6.2 # Numeric array processing utilities; used by calc, chem, and scipy +pyparsing # Python parsing library; used by the calc package +sympy==0.7.1 # Symbolic math library; used by the calc package +scipy==0.14.0 # Math, science, and engineering library; used by the calc package + +# Install these packages from the edx-platform working tree +# NOTE: if you change code in these packages, you MUST change the version +# number in its setup.py or the code WILL NOT be installed during deploy. +-e common/lib/calc +-e common/lib/chem +-e common/lib/sandbox-packages +-e common/lib/symmath diff --git a/requirements/edx-sandbox/shared.txt b/requirements/edx-sandbox/shared.txt new file mode 100644 index 000000000000..92dad3f3e154 --- /dev/null +++ b/requirements/edx-sandbox/shared.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# + +-e common/lib/calc +-e common/lib/chem +-e common/lib/sandbox-packages +-e common/lib/symmath +asn1crypto==0.24.0 # via cryptography +cffi==1.11.5 # via cryptography +cryptography==2.1.4 +enum34==1.1.6 # via cryptography +idna==2.6 # via cryptography +ipaddress==1.0.19 # via cryptography +lxml==3.8.0 +networkx==1.7 +nltk==3.2.5 +numpy==1.6.2 +pycparser==2.18 # via cffi +pyparsing==2.0.7 +scipy==0.14.0 +six==1.11.0 # via cryptography, nltk +sympy==0.7.1 diff --git a/requirements/edx/base.in b/requirements/edx/base.in new file mode 100644 index 000000000000..7c30a118c5b3 --- /dev/null +++ b/requirements/edx/base.in @@ -0,0 +1,189 @@ +# Core dependencies for running edx-platform (LMS or Studio) +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files +# +-r ../edx-sandbox/shared.txt # Dependencies which are also used by code sandboxes +-r github.in # Forks and other dependencies not yet on PyPI +-r local.in # Packages in edx-platform which have their own setup.py +-r paver.txt # Requirements for running paver commands + +# Please follow these guidelines whenever you change this file: +# +# 1. When adding a new dependency, add a comment to the end of the line +# explaining why it is needed. +# 2. Do not pin exact versions unless absolutely necessary. When upgrading +# an already-pinned package to its latest release, remove the version pin. +# 3. Do not add indirect dependencies unless a version constraint is needed to +# avoid versions which have known problems. +# 4. If the package is not needed in production, add it to another file such +# as development.in or testing.in instead. + +analytics-python==1.1.0 # Used for Segment analytics +attrs==17.2.0 # Reduces boilerplate code involving class attributes +Babel==1.3 # Internationalization utilities +beautifulsoup4==4.1.3 # Library for extracting data from HTML and XML files +bleach==1.4 # Allowed-list-based HTML sanitizing library that escapes or strips markup and attributes +boto==2.39.0 # Deprecated version of the AWS SDK; we should stop using this +boto3==1.4.8 # Amazon Web Services SDK for Python +botocore==1.8.17 # via boto3, s3transfer +celery==3.1.25 # Asynchronous task execution library +defusedxml==0.4.1 # XML bomb protection for common XML parsers +Django==1.11.12 # Web application framework +django-babel-underscore # underscore template extractor for django-babel (internationalization utilities) +django-birdcage # CSRF token forwards compatibility for the Django 1.11 upgrade; can be removed after that +django-config-models==0.1.8 # Configuration models for Django allowing config management with auditing +django-cors-headers==2.1.0 # Used to allow to configure CORS headers for cross-domain requests +django-countries==4.6.1 # Country data for Django forms and model fields +django-fernet-fields # via edx-enterprise (should be added to its setup.py) +django-filter==1.0.4 # Allows users to filter Django querysets dynamically +django-ipware==1.1.0 # Get the client's real IP address +django-memcached-hashring +django-method-override==0.1.0 +django-model-utils==3.0.0 +django-mptt>=0.8.6,<0.9 +django-oauth-toolkit==0.12.0 +django-pyfs +django-ratelimit +django-ratelimit-backend==1.1.1 +django-require +django-sekizai +django-ses==0.8.4 +django-simple-history +django-splash +django-statici18n==1.4.0 +django-storages==1.4.1 +django-user-tasks +django-waffle==0.12.0 +django-webpack-loader==0.4.1 +djangorestframework-jwt +docutils +dogapi==1.2.1 # Python bindings to Datadog's API, for metrics gathering +enum34==1.1.6 +edx-ace +edx-analytics-data-api-client +edx-ccx-keys +edx-celeryutils +edx-completion +edx-django-release-util # Release utils for the edx release pipeline +edx-drf-extensions +edx-i18n-tools==0.4.2 +edx-django-oauth2-provider==1.2.5 +edx-django-sites-extensions==2.3.1 +edx-enterprise +edx-milestones +edx-oauth2-provider +edx-organizations +edx-proctoring +edx-rest-api-client +edx-search +edx-submissions +edx-user-state-client +edxval +enum34 +event-tracking +feedparser==5.1.3 +firebase-token-generator==1.3.2 +fs==2.0.18 +fs-s3fs==0.1.8 +futures ; python_version == "2.7" # via django-pipeline, python-swift-client, s3transfer +GitPython==0.3.2.RC1 +glob2==0.3 +gunicorn==0.17.4 +help-tokens +html5lib==0.999 # HTML parser, used for capa problems +ipaddr==2.1.11 # Ip network support for Embargo feature +jsonfield # Django model field for validated JSON; used in several apps +mailsnake==1.6.2 # Needed for mailchimp (mailing djangoapp) +mako==1.0.2 # Primary template language used for server-side page rendering +Markdown # Convert text markup to HTML; used in capa problems, forums, and course wikis +mongoengine==0.10.0 # Object-document mapper for MongoDB, used in the LMS dashboard +MySQL-python # Driver for the default production relational database +newrelic==2.106.1.88 # New Relic agent for performance monitoring +numpy==1.6.2 # Fast numeric array computation, used in some problem types +oauthlib==2.0.1 # OAuth specification support for authenticating via LTI or other Open edX services +pdfminer # Used in shoppingcart for extracting/parsing pdf text +piexif==1.0.2 # Exif image metadata manipulation, used in the profile_images app +Pillow==3.4 # Image manipulation library; used for course assets, profile images, invoice PDFs, etc. +polib==1.0.3 # Library for manipulating gettext translation files, used to test paver i18n commands +py2neo # Used to communicate with Neo4j, which is used internally for modulestore inspection +pycountry==1.20 +pycryptodomex==3.4.7 +pygments==2.2.0 +pygraphviz==1.1 +pyjwkest==1.3.2 +# TODO Replace PyJWT usage with pyjwkest +PyJWT==1.5.2 +pymongo # MongoDB driver +pynliner==0.5.2 # Inlines CSS styles into HTML for email notifications +python-dateutil==2.4 +python-Levenshtein +python-openid +python-saml +pyuca==1.1 +reportlab==3.1.44 # Used for shopping cart's pdf invoice/receipt generation +social-auth-app-django==1.2.0 +social-auth-core==1.4.0 +pysrt==0.4.7 +pytz==2016.10 # Time zone information database +PyYAML # Used to parse XModule resource templates +redis==2.10.6 # celery task broker +requests-oauthlib==0.6.1 +rules # Django extension for rules-based authorization checks +s3transfer==0.1.12 +sailthru-client==2.2.3 # For Sailthru integration +Shapely==1.2.16 +singledispatch==3.4.0.2 +six +sorl-thumbnail==12.3 +sortedcontainers==0.9.2 +stevedore +sure==1.2.3 +unicodecsv +user-util # Functionality for retiring users (GDPR compliance) +web-fragments # Provides the ability to render fragments of web pages +XBlock==1.1.1 # Courseware component architecture +xblock-review # XBlock which displays problems from earlier in the course for ungraded retries +xmltodict==0.4.1 +zendesk + +# Move these to development.in? +django-debug-toolbar==1.8 # A set of panels that display debug information about the current request/response +sphinx==1.1.3 # Documentation builder +sphinx_rtd_theme==0.1.5 # Documentation theme; should replace with edx-sphinx-theme +transifex-client==0.12.1 # Command-line interface for the Transifex localization service + +# Move these to testing.in? +before_after==0.1.3 +bok-choy +chrono +cssselect==0.9.1 # via pyquery +ddt==0.8.0 +django-crum +django_nose==1.4.1 +factory_boy==2.8.1 +flaky +freezegun==0.3.8 +httpretty # Library for mocking HTTP requests, used in many tests +moto==0.3.1 +needle +nodeenv==1.1.1 +nose +nose-exclude +nose-faulthandler +nose-ignore-docstring +nose-randomly==1.2.0 +nose-xunitmp==0.3.2 +pep8==1.5.7 +PyContracts==1.7.1 +pyquery==1.2.9 +python-subunit==0.0.16 +radon==1.3.2 +selenium +splinter==0.5.4 +testfixtures==4.5.0 +testtools==0.9.34 diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 2fe75b78d8fc..5eadde826199 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -1,234 +1,285 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! # -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# -appdirs==1.4.3 +-e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock +-e common/lib/calc +-e common/lib/capa +-e common/lib/chem +-e git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail +git+https://github.com/solashirai/crowdsourcehinter.git@518605f0a95190949fe77bd39158450639e2e1dc#egg=crowdsourcehinter-xblock==0.1 +git+https://github.com/mitodl/django-cas.git@afac57bc523f145ae826f4ed3d4fa8b2c86c5364#egg=django-cas==2.1.1 +git+https://github.com/edx/django-celery.git@756cb57aad765cb2b0d37372c1855b8f5f37e6b0#egg=django-celery==3.2.1+edx.2 +git+https://github.com/hmarr/django-debug-toolbar-mongo.git@b0686a76f1ce3532088c4aee6e76b9abe61cc808#egg=django-debug-toolbar-mongo==0.1.10 +git+https://github.com/edx/django-oauth-plus.git@01ec2a161dfc3465f9d35b9211ae790177418316#egg=django-oauth-plus==2.2.9.edx-1 +git+https://github.com/edx/django-openid-auth.git@0.15.1#egg=django-openid-auth==0.15.1 +git+https://github.com/jazzband/django-pipeline.git@d068a019169c9de5ee20ece041a6dea236422852#egg=django-pipeline==1.5.3 +-e git+https://github.com/edx/django-wiki.git@v0.0.17#egg=django-wiki +git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 +git+https://github.com/edx/django-rest-framework.git@1ceda7c086fddffd1c440cc86856441bbf0bd9cb#egg=djangorestframework==3.6.3 +-e common/lib/dogstats +-e git+https://github.com/edx/DoneXBlock.git@01a14f3bd80ae47dd08cdbbe2f88f3eb88d00fba#egg=done-xblock +-e git+https://github.com/jazkarta/edx-jsme.git@690dbf75441fa91c7c4899df0b83d77f7deb5458#egg=edx-jsme +git+https://github.com/mitodl/edx-sga.git@6b2f7aa2a18206023c8407e2c46f86d4b4c3ac96#egg=edx-sga==0.8.0 +git+https://github.com/edx/lettuce.git@31b0dfd865766243e9b563ec65fae9122edf7975#egg=lettuce==0.2.23+edx.1 +git+https://github.com/edx/xblock-lti-consumer.git@v1.1.7#egg=lti_consumer-xblock==1.1.7 +git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=MongoDBProxy==0.1.0 +-e . +git+https://github.com/edx/edx-ora2.git@2.1.14#egg=ora2==2.1.14 +-e git+https://github.com/dgrtwo/ParsePy.git@7949b9f754d1445eff8e8f20d0e967b9a6420639#egg=parse_rest +-e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip +-e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev +-e git+https://github.com/edx/RateXBlock.git@367e19c0f6eac8a5f002fd0f1559555f8e74bfff#egg=rate-xblock +git+https://github.com/edx/RecommenderXBlock.git@1.3#egg=recommender-xblock==1.3 +git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx +-e common/lib/safe_lxml +-e common/lib/sandbox-packages +-e common/lib/symmath +-e openedx/core/lib/xblock_builtin/xblock_discussion +git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@2.1.5#egg=xblock-drag-and-drop-v2==2.1.5 +-e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive +git+https://github.com/open-craft/xblock-poll@7ba819b968fe8faddb78bb22e1fe7637005eb414#egg=xblock-poll==1.2.7 +git+https://github.com/edx/xblock-utils.git@v1.0.5#egg=xblock-utils==1.0.5 +-e common/lib/xmodule +amqp==1.4.9 # via kombu +analytics-python==1.1.0 +anyjson==0.3.3 # via kombu +appdirs==1.4.3 # via fs +argh==0.26.2 +argparse==1.4.0 +asn1crypto==0.24.0 attrs==17.2.0 +babel==1.3 beautifulsoup4==4.1.3 -beautifulsoup==3.2.1 +beautifulsoup==3.2.1 # via pynliner +before_after==0.1.3 +billiard==3.3.0.23 # via celery bleach==1.4 -html5lib==0.999 -boto==2.39.0 +bok-choy==0.7.2 boto3==1.4.8 +boto==2.39.0 botocore==1.8.17 -celery==3.1.18 -cryptography==1.9 +celery==3.1.25 +cffi==1.11.5 +charade==1.0.3 # via pysrt +chrono==1.0.2 +click==6.7 # via flask, user-util +colorama==0.3.9 # via radon +cryptography==2.1.4 cssselect==0.9.1 +cssutils==1.0.2 # via pynliner +ddt==0.8.0 +decorator==4.2.1 # via dogapi, pycontracts defusedxml==0.4.1 +dicttoxml==1.7.4 # via moto +django-appconf==1.0.2 # via django-statici18n django-babel-underscore==0.5.2 -markey==0.8 # From django-babel-underscore +django-babel==0.6.2 # via django-babel-underscore django-birdcage==1.0.0 +django-braces==1.12.0 # via django-oauth-toolkit +django-classy-tags==0.8.0 # via django-sekizai django-config-models==0.1.8 +django-cors-headers==2.1.0 django-countries==4.6.1 +django-crum==0.7.2 +django-debug-toolbar==1.8 django-fernet-fields==0.5 django-filter==1.0.4 django-ipware==1.1.0 +django-memcached-hashring==0.1.2 +django-method-override==0.1.0 django-model-utils==3.0.0 -django-mptt>=0.8.6,<0.9 +django-mptt==0.8.7 +django-multi-email-field==0.5.1 # via edx-enterprise django-oauth-toolkit==0.12.0 +django-object-actions==0.10.0 # via edx-enterprise django-pyfs==2.0 +django-ratelimit-backend==1.1.1 django-ratelimit==1.1.0 -django-sekizai>=0.10 +django-require==1.0.11 +django-sekizai==0.10.0 django-ses==0.8.4 -django-simple-history==1.9.0 +django-simple-history==2.0 django-splash==0.2.2 django-statici18n==1.4.0 django-storages==1.4.1 -django-method-override==0.1.0 django-user-tasks==0.1.5 django-waffle==0.12.0 +django-webpack-loader==0.4.1 +django==1.11.12 +django_nose==1.4.1 djangorestframework-jwt==1.11.0 +djangorestframework-xml==1.3.0 # via edx-enterprise +dm.xmlsec.binding==1.3.3 # via python-saml +docopt==0.6.2 docutils==0.14 -enum34==1.1.6 +dogapi==1.2.1 edx-ace==0.1.6 -edx-analytics-data-api-client==0.14.3 +edx-analytics-data-api-client==0.14.4 edx-ccx-keys==0.2.1 edx-celeryutils==0.2.7 -edx-drf-extensions==1.2.4 -edx-i18n-tools==0.4.2 -edx-lint==0.5.4 - -# Pin this to test a fix to pylint-django -git+https://github.com/cpennington/pylint-django@fix-field-inference-during-monkey-patching#egg=pylint-django==0.0 - -enum34==1.1.6 edx-completion==0.1.5 edx-django-oauth2-provider==1.2.5 +edx-django-release-util==0.3.1 edx-django-sites-extensions==2.3.1 +edx-drf-extensions==1.2.5 edx-enterprise==0.67.3 +edx-i18n-tools==0.4.2 edx-milestones==0.1.13 edx-oauth2-provider==1.2.2 -edx-organizations==0.4.9 +edx-opaque-keys[django]==0.4.4 +edx-organizations==0.4.10 edx-proctoring==1.3.9 edx-rest-api-client==1.7.1 edx-search==1.1.0 edx-submissions==2.0.12 edx-user-state-client==1.0.3 edxval==0.1.12 +elasticsearch==1.9.0 # via edx-search +enum34==1.1.6 event-tracking==0.2.4 +extras==1.0.0 # via python-subunit, testtools +factory_boy==2.8.1 +faker==0.8.12 # via factory-boy +faulthandler==3.0 # via nose-faulthandler feedparser==5.1.3 firebase-token-generator==1.3.2 -fs==2.0.17 -fs-s3fs==0.1.5 +flaky==3.4.0 +flask==0.12.2 # via moto +freezegun==0.3.8 +fs-s3fs==0.1.8 +fs==2.0.18 +future==0.16.0 # via pyjwkest futures==3.2.0 ; python_version == "2.7" -GitPython==0.3.2.RC1 +fuzzywuzzy==0.16.0 +gitdb==0.6.4 # via gitpython +gitpython==0.3.2.rc1 glob2==0.3 gunicorn==0.17.4 +hash-ring==1.3.1 # via django-memcached-hashring help-tokens==1.0.3 +html5lib==0.999 +httplib2==0.11.3 # via oauth2, zendesk httpretty==0.8.14 -jmespath==0.9.3 +idna==2.6 +ipaddr==2.1.11 +ipaddress==1.0.19 +isodate==0.6.0 # via python-saml +itsdangerous==0.24 # via flask +jinja2==2.10 # via flask, moto, sphinx +jmespath==0.9.3 # via boto3, botocore +jsondiff==1.1.1 # via edx-enterprise +jsonfield==2.0.2 +kombu==3.0.37 # via celery lazy==1.1 +lepl==5.1.3 +libsass==0.10.0 +loremipsum==1.0.5 +lxml==3.8.0 +mailsnake==1.6.2 mako==1.0.2 -Markdown>=2.6,<2.7 +mando==0.3.3 # via radon +markdown==2.6.11 +markey==0.8 # via django-babel-underscore +markupsafe==1.0 +mock==1.0.1 mongoengine==0.10.0 -MySQL-python==1.2.5 +moto==0.3.1 +mysql-python==1.2.5 +needle==0.5.0 networkx==1.7 +newrelic==2.106.1.88 +nltk==3.2.5 +nodeenv==1.1.1 +nose-exclude==0.5.0 +nose-faulthandler==0.1 +nose-ignore-docstring==0.2 +nose-randomly==1.2.0 nose-xunitmp==0.3.2 -oauthlib==1.0.3 +nose==1.3.7 +numpy==1.6.2 +oauth2==1.9.0.post1 +oauthlib==2.0.1 path.py==8.2.1 +pathtools==0.1.2 +paver==1.3.4 +pbr==4.0.1 +pdfminer==20140328 +pep8==1.5.7 piexif==1.0.2 -Pillow==3.4 +pillow==3.4.0 polib==1.0.3 psutil==1.2.1 +py2neo==3.1.2 +pycontracts==1.7.1 pycountry==1.20 +pycparser==2.18 pycryptodomex==3.4.7 pygments==2.2.0 pygraphviz==1.1 pyjwkest==1.3.2 -# TODO Replace PyJWT usage with pyjwkest -PyJWT==1.4.0 +pyjwt==1.5.2 pymongo==2.9.1 -pyparsing==2.2.0 +pynliner==0.5.2 +pyparsing==2.0.7 +pyquery==1.2.9 +pysrt==0.4.7 +python-dateutil==2.4.0 +python-levenshtein==0.12.0 python-memcached==1.48 -django-memcached-hashring==0.1.2 +python-mimeparse==1.6.0 # via testtools python-openid==2.2.5 -python-dateutil==2.1 -python-Levenshtein==0.12.0 -social-auth-app-django==1.2.0 -social-auth-core==1.4.0 -pytz==2016.7 -pysrt==0.4.7 -PyYAML==3.12 -requests-oauthlib==0.4.1 -rules==1.1.1 +python-saml==2.4.0 +python-subunit==0.0.16 +python-swiftclient==3.5.0 +pytz==2016.10 +pyuca==1.1 +pyyaml==3.12 +radon==1.3.2 +redis==2.10.6 +reportlab==3.1.44 +requests-oauthlib==0.6.1 +requests==2.9.1 +rules==1.3 s3transfer==0.1.12 -numpy==1.6.2 +sailthru-client==2.2.3 scipy==0.14.0 -Shapely==1.2.16 +selenium==3.11.0 +shapely==1.2.16 +shortuuid==0.5.0 # via edx-django-oauth2-provider +simplejson==3.13.2 # via dogapi, mailsnake, sailthru-client, zendesk singledispatch==3.4.0.2 -six>=1.10.0,<2.0.0 +six==1.11.0 +slumber==0.7.1 # via edx-rest-api-client +smmap==0.9.0 # via gitdb +social-auth-app-django==1.2.0 +social-auth-core==1.4.0 sorl-thumbnail==12.3 sortedcontainers==0.9.2 +sphinx==1.1.3 +sphinx_rtd_theme==0.1.5 +splinter==0.5.4 +sqlparse==0.2.4 # via django-debug-toolbar stevedore==1.10.0 sure==1.2.3 sympy==0.7.1 -user-util==0.1.1 -xmltodict==0.4.1 -django-ratelimit-backend==1.1.1 +testfixtures==4.5.0 +testtools==0.9.34 +text-unidecode==1.2 # via faker +transifex-client==0.12.1 unicodecsv==0.14.1 -django-require==1.0.11 -django-webpack-loader==0.4.1 -pyuca==1.1 -zendesk==1.1.1 - -# XBlocks -xblock-review==1.1.5 - -# lxml is also in requirements/edx-sandbox/post.txt -lxml==3.8.0 - -# Used for shopping cart's pdf invoice/receipt generation -reportlab==3.1.44 - -# Used for extracting/parsing pdf text -pdfminer==20140328 - -# Used for development operation +urllib3==1.22 # via elasticsearch, transifex-client +user-util==0.1.2 +voluptuous==0.11.1 watchdog==0.8.3 - -# Metrics gathering and monitoring -dogapi==1.2.1 -newrelic==2.106.1.88 - -# Used for documentation gathering -sphinx==1.1.3 -sphinx_rtd_theme==0.1.5 - -# Used for Internationalization and localization -Babel==1.3 -transifex-client==0.12.1 - -# Ip network support for Embargo feature -ipaddr==2.1.11 - -# Used to allow to configure CORS headers for cross-domain requests -django-cors-headers==2.1.0 - -# Debug toolbar -django_debug_toolbar==1.8 -sqlparse>=0.2.0,<0.3.0 - -# Used for testing -before_after==0.1.3 -bok-choy==0.7.2 - -chrono==1.0.2 -ddt==0.8.0 -django-crum==0.7.2 -django_nose==1.4.1 -factory_boy==2.8.1 -flaky==3.4.0 -freezegun==0.3.8 -moto==0.3.1 -needle==0.5.0 -nose==1.3.7 -nose-exclude -nose-ignore-docstring -nose-randomly==1.2.0 -nosexcover==1.0.7 -pa11ycrawler==1.6.2 -pep8==1.5.7 -PyContracts==1.7.1 -python-subunit==0.0.16 -pyquery==1.2.9 -radon==1.3.2 -selenium==3.11.0 -splinter==0.5.4 -testtools==0.9.34 -testfixtures==4.5.0 -nose-faulthandler==0.1 -nodeenv==1.1.1 - -# Used for Segment analytics -analytics-python==1.1.0 - -# Needed for mailchimp(mailing djangoapp) -mailsnake==1.6.2 -jsonfield==2.0.2 - -# Inlines CSS styles into HTML for email notifications. -pynliner==0.5.2 - -# for sailthru integration -sailthru-client==2.2.3 - -# Release utils for the edx release pipeline -edx-django-release-util==0.3.1 - -# Used to communicate with Neo4j, which is used internally for -# modulestore inspection -py2neo==3.1.2 - -# for calculating coverage --r coverage.txt - -# Support for plugins web-fragments==0.2.2 -XBlock==1.1.1 - -# Redis version -redis==2.10.6 - --r base_common.txt +webob==1.8.0 # via xblock +werkzeug==0.14.1 # via flask +wrapt==1.10.5 +xblock-review==1.1.5 +xblock==1.1.1 +xmltodict==0.4.1 +zendesk==1.1.1 diff --git a/requirements/edx/base_common.txt b/requirements/edx/base_common.txt deleted file mode 100644 index 49609ad1c5d6..000000000000 --- a/requirements/edx/base_common.txt +++ /dev/null @@ -1,12 +0,0 @@ -# These requirements are needed by both paver.txt and base.txt currently. -# When tox builds an environment with multiple requirements files and finds -# the same package listed multiple times, it'll fail to build the tox environment. -# Using a common base requirements file and '-r' including it in other files -# works around the tox issue. -# -# We plan to move edx-platform to use pip-tools soon and each target will have its -# own requirements files built, which will remove the need for this file. -wrapt==1.10.5 -edx-opaque-keys==0.4.3 -requests==2.9.1 -mock==1.0.1 diff --git a/requirements/edx/coverage.in b/requirements/edx/coverage.in new file mode 100644 index 000000000000..d7076b450b0b --- /dev/null +++ b/requirements/edx/coverage.in @@ -0,0 +1,13 @@ +# Dependencies that are used solely for calculating test coverage. +# These are split out so that if you are only calculating coverage +# then you don't need to install all the rest of the prereqs. +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files +# +coverage==4.2 # Code coverage testing for Python +diff-cover==0.9.8 # Automatically find diff lines that need test coverage diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt index fcfaa5c82217..7c30340990e3 100644 --- a/requirements/edx/coverage.txt +++ b/requirements/edx/coverage.txt @@ -1,7 +1,15 @@ # -# Dependencies that are used solely for calculating test coverage. -# These are split out so that if you are only calculating coverage -# then you don't need to install all the rest of the prereqs. +# This file is autogenerated by pip-compile +# To update, run: # +# make upgrade +# + coverage==4.2 diff-cover==0.9.8 +inflect==0.2.5 # via jinja2-pluralize +jinja2-pluralize==0.3.0 # via diff-cover +jinja2==2.10 # via diff-cover, jinja2-pluralize +markupsafe==1.0 # via jinja2 +pygments==2.2.0 # via diff-cover +six==1.11.0 # via diff-cover diff --git a/requirements/edx/development.in b/requirements/edx/development.in new file mode 100644 index 000000000000..ecfe19689516 --- /dev/null +++ b/requirements/edx/development.in @@ -0,0 +1,16 @@ +# Dependencies that are used in development environments. +# Please do not use this file for packages that are needed in production or for test runs. +# +# These are installed automatically in devstack, and can also be installed manually using: +# +# pip install -r requirements/edx/development.txt +# + +-r pip-tools.txt # pip-tools and its dependencies, for managing requirements files +-r testing.txt # Dependencies for running the various test suites + +click # Used for perf_tests utilities in modulestore +pyinotify # More efficient checking for runserver reload trigger events + +# Performance timer used in modulestore/perf_tests/test_asset_import_export.py +-e git+https://github.com/doctoryes/code_block_timer.git@f3d0629f086bcc649c3c77f4bc5b9c2c8172c3bf#egg=code_block_timer diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 5a280758dc7c..36f4c5d3dbf9 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1,16 +1,336 @@ # -# Dependencies that are used in development only - and are *NOT* needed to be installed in staging/production. +# This file is autogenerated by pip-compile +# To update, run: # -# These are installed automatically in devstack, and can also be installed manually using: +# make upgrade # -# pip install -r requirements/edx/development.txt -# - -# Python libraries to install directly from github / PyPi -click==3.3 +-e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock +-e common/lib/calc +-e common/lib/capa +-e common/lib/chem +-e git+https://github.com/doctoryes/code_block_timer.git@f3d0629f086bcc649c3c77f4bc5b9c2c8172c3bf#egg=code_block_timer +-e git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail +git+https://github.com/solashirai/crowdsourcehinter.git@518605f0a95190949fe77bd39158450639e2e1dc#egg=crowdsourcehinter-xblock==0.1 +git+https://github.com/mitodl/django-cas.git@afac57bc523f145ae826f4ed3d4fa8b2c86c5364#egg=django-cas==2.1.1 +git+https://github.com/edx/django-celery.git@756cb57aad765cb2b0d37372c1855b8f5f37e6b0#egg=django-celery==3.2.1+edx.2 +git+https://github.com/hmarr/django-debug-toolbar-mongo.git@b0686a76f1ce3532088c4aee6e76b9abe61cc808#egg=django-debug-toolbar-mongo==0.1.10 +git+https://github.com/edx/django-oauth-plus.git@01ec2a161dfc3465f9d35b9211ae790177418316#egg=django-oauth-plus==2.2.9.edx-1 +git+https://github.com/edx/django-openid-auth.git@0.15.1#egg=django-openid-auth==0.15.1 +git+https://github.com/jazzband/django-pipeline.git@d068a019169c9de5ee20ece041a6dea236422852#egg=django-pipeline==1.5.3 +-e git+https://github.com/edx/django-wiki.git@v0.0.17#egg=django-wiki +git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 +git+https://github.com/edx/django-rest-framework.git@1ceda7c086fddffd1c440cc86856441bbf0bd9cb#egg=djangorestframework==3.6.3 +-e common/lib/dogstats +-e git+https://github.com/edx/DoneXBlock.git@01a14f3bd80ae47dd08cdbbe2f88f3eb88d00fba#egg=done-xblock +-e git+https://github.com/jazkarta/edx-jsme.git@690dbf75441fa91c7c4899df0b83d77f7deb5458#egg=edx-jsme +git+https://github.com/mitodl/edx-sga.git@6b2f7aa2a18206023c8407e2c46f86d4b4c3ac96#egg=edx-sga==0.8.0 +git+https://github.com/edx/lettuce.git@31b0dfd865766243e9b563ec65fae9122edf7975#egg=lettuce==0.2.23+edx.1 +git+https://github.com/edx/xblock-lti-consumer.git@v1.1.7#egg=lti_consumer-xblock==1.1.7 +git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=MongoDBProxy==0.1.0 +-e . +git+https://github.com/edx/edx-ora2.git@2.1.14#egg=ora2==2.1.14 +-e git+https://github.com/dgrtwo/ParsePy.git@7949b9f754d1445eff8e8f20d0e967b9a6420639#egg=parse_rest +-e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip +-e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev +-e git+https://github.com/edx/RateXBlock.git@367e19c0f6eac8a5f002fd0f1559555f8e74bfff#egg=rate-xblock +git+https://github.com/edx/RecommenderXBlock.git@1.3#egg=recommender-xblock==1.3 +git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx +-e common/lib/safe_lxml +-e common/lib/sandbox-packages +-e common/lib/symmath +-e openedx/core/lib/xblock_builtin/xblock_discussion +git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@2.1.5#egg=xblock-drag-and-drop-v2==2.1.5 +-e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive +git+https://github.com/open-craft/xblock-poll@7ba819b968fe8faddb78bb22e1fe7637005eb414#egg=xblock-poll==1.2.7 +git+https://github.com/edx/xblock-utils.git@v1.0.5#egg=xblock-utils==1.0.5 +-e common/lib/xmodule +amqp==1.4.9 +analytics-python==1.1.0 +anyjson==0.3.3 +apipkg==1.4 +appdirs==1.4.3 +argh==0.26.2 +argparse==1.4.0 +asn1crypto==0.24.0 +astroid==1.5.2 +attrs==17.2.0 +babel==1.3 +backports.functools-lru-cache==1.5 +beautifulsoup4==4.1.3 +beautifulsoup==3.2.1 +before_after==0.1.3 +billiard==3.3.0.23 +bleach==1.4 +bok-choy==0.7.2 +boto3==1.4.8 +boto==2.39.0 +botocore==1.8.17 +celery==3.1.25 +cffi==1.11.5 +charade==1.0.3 +chrono==1.0.2 +click-log==0.1.8 +click==6.7 +colorama==0.3.9 +configparser==3.5.0 +constantly==15.1.0 +coverage==4.2 +cryptography==2.1.4 +cssselect==0.9.1 +cssutils==1.0.2 +ddt==0.8.0 +decorator==4.2.1 +defusedxml==0.4.1 +dicttoxml==1.7.4 +diff-cover==0.9.8 +django-appconf==1.0.2 +django-babel-underscore==0.5.2 +django-babel==0.6.2 +django-birdcage==1.0.0 +django-braces==1.12.0 +django-classy-tags==0.8.0 +django-config-models==0.1.8 +django-cors-headers==2.1.0 +django-countries==4.6.1 +django-crum==0.7.2 +django-debug-toolbar==1.8 +django-fernet-fields==0.5 +django-filter==1.0.4 +django-ipware==1.1.0 +django-memcached-hashring==0.1.2 +django-method-override==0.1.0 +django-model-utils==3.0.0 +django-mptt==0.8.7 +django-multi-email-field==0.5.1 +django-oauth-toolkit==0.12.0 +django-object-actions==0.10.0 +django-pyfs==2.0 +django-ratelimit-backend==1.1.1 +django-ratelimit==1.1.0 +django-require==1.0.11 +django-sekizai==0.10.0 +django-ses==0.8.4 +django-simple-history==2.0 +django-splash==0.2.2 +django-statici18n==1.4.0 +django-storages==1.4.1 +django-user-tasks==0.1.5 +django-waffle==0.12.0 +django-webpack-loader==0.4.1 +django==1.11.12 +django_nose==1.4.1 +djangorestframework-jwt==1.11.0 +djangorestframework-xml==1.3.0 +dm.xmlsec.binding==1.3.3 +docopt==0.6.2 +docutils==0.14 +dogapi==1.2.1 +edx-ace==0.1.6 +edx-analytics-data-api-client==0.14.4 +edx-ccx-keys==0.2.1 +edx-celeryutils==0.2.7 +edx-completion==0.1.5 +edx-django-oauth2-provider==1.2.5 +edx-django-release-util==0.3.1 +edx-django-sites-extensions==2.3.1 +edx-drf-extensions==1.2.5 +edx-enterprise==0.67.3 +edx-i18n-tools==0.4.2 +edx-lint==0.5.4 +edx-milestones==0.1.13 +edx-oauth2-provider==1.2.2 +edx-opaque-keys[django]==0.4.4 +edx-organizations==0.4.10 +edx-proctoring==1.3.9 +edx-rest-api-client==1.7.1 +edx-search==1.1.0 +edx-submissions==2.0.12 +edx-user-state-client==1.0.3 +edxval==0.1.12 +elasticsearch==1.9.0 +enum34==1.1.6 +event-tracking==0.2.4 +execnet==1.5.0 +extras==1.0.0 +factory_boy==2.8.1 +faker==0.8.12 +faulthandler==3.0 +feedparser==5.1.3 +firebase-token-generator==1.3.2 +first==2.0.1 +flaky==3.4.0 +flask==0.12.2 +freezegun==0.3.8 +fs-s3fs==0.1.8 +fs==2.0.18 +future==0.16.0 +futures==3.2.0 ; python_version == "2.7" +fuzzywuzzy==0.16.0 +gitdb==0.6.4 +gitpython==0.3.2.rc1 +glob2==0.3 +gunicorn==0.17.4 +hash-ring==1.3.1 +help-tokens==1.0.3 +html5lib==0.999 +httplib2==0.11.3 +httpretty==0.8.14 +idna==2.6 +incremental==17.5.0 +inflect==0.2.5 +ipaddr==2.1.11 +ipaddress==1.0.19 +isodate==0.6.0 isort==4.2.5 +itsdangerous==0.24 +jinja2-pluralize==0.3.0 +jinja2==2.10 +jmespath==0.9.3 +jsondiff==1.1.1 +jsonfield==2.0.2 +kombu==3.0.37 +lazy-object-proxy==1.3.1 +lazy==1.1 +lepl==5.1.3 +libsass==0.10.0 +loremipsum==1.0.5 +lxml==3.8.0 +mailsnake==1.6.2 +mako==1.0.2 +mando==0.3.3 +markdown==2.6.11 +markey==0.8 +markupsafe==1.0 +mccabe==0.6.1 +mock==1.0.1 +mongoengine==0.10.0 +moto==0.3.1 +mysql-python==1.2.5 +needle==0.5.0 +networkx==1.7 +newrelic==2.106.1.88 +nltk==3.2.5 +nodeenv==1.1.1 +nose-exclude==0.5.0 +nose-faulthandler==0.1 +nose-ignore-docstring==0.2 +nose-randomly==1.2.0 +nose-xunitmp==0.3.2 +nose==1.3.7 +numpy==1.6.2 +oauth2==1.9.0.post1 +oauthlib==2.0.1 +pa11ycrawler==1.6.2 +parsel==1.4.0 +path.py==8.2.1 +pathtools==0.1.2 +paver==1.3.4 +pbr==4.0.1 +pdfminer==20140328 +pep8==1.5.7 +piexif==1.0.2 +pillow==3.4.0 +pip-tools==1.11.0 +pluggy==0.6.0 +polib==1.0.3 +psutil==1.2.1 +py2neo==3.1.2 +py==1.5.3 +pyasn1-modules==0.2.1 +pyasn1==0.4.2 +pycontracts==1.7.1 +pycountry==1.20 +pycparser==2.18 +pycryptodomex==3.4.7 +pydispatcher==2.0.5 +pygments==2.2.0 +pygraphviz==1.1 pyinotify==0.9.6 - -# Third-party: --e git+https://github.com/doctoryes/code_block_timer.git@f3d0629f086bcc649c3c77f4bc5b9c2c8172c3bf#egg=code_block_timer +pyjwkest==1.3.2 +pyjwt==1.5.2 +pylint-celery==0.3 +pylint-django==0.7.2 +pylint-plugin-utils==0.2.6 +pylint==1.7.1 +pymongo==2.9.1 +pynliner==0.5.2 +pyopenssl==17.5.0 +pyparsing==2.0.7 +pyquery==1.2.9 +pysqlite==2.8.3 +pysrt==0.4.7 +pytest-attrib==0.1.3 +pytest-catchlog==1.2.2 +pytest-cov==2.5.1 +pytest-django==3.1.2 +pytest-forked==0.2 +pytest-randomly==1.2.1 +pytest-xdist==1.20.0 +pytest==3.1.3 +python-dateutil==2.4.0 +python-levenshtein==0.12.0 +python-memcached==1.48 +python-mimeparse==1.6.0 +python-openid==2.2.5 +python-saml==2.4.0 +python-subunit==0.0.16 +python-swiftclient==3.5.0 +pytz==2016.10 +pyuca==1.1 +pyyaml==3.12 +queuelib==1.5.0 +radon==1.3.2 +redis==2.10.6 +reportlab==3.1.44 +requests-oauthlib==0.6.1 +requests==2.9.1 +rules==1.3 +s3transfer==0.1.12 +sailthru-client==2.2.3 +scipy==0.14.0 +scrapy==1.1.2 +selenium==3.11.0 +service-identity==17.0.0 +shapely==1.2.16 +shortuuid==0.5.0 +simplejson==3.13.2 +singledispatch==3.4.0.2 +six==1.11.0 +slumber==0.7.1 +smmap==0.9.0 +social-auth-app-django==1.2.0 +social-auth-core==1.4.0 +sorl-thumbnail==12.3 +sortedcontainers==0.9.2 +sphinx==1.1.3 +sphinx_rtd_theme==0.1.5 +splinter==0.5.4 +sqlparse==0.2.4 +stevedore==1.10.0 +sure==1.2.3 +sympy==0.7.1 +testfixtures==4.5.0 +testtools==0.9.34 +text-unidecode==1.2 +tox-battery==0.5 +tox==2.8.2 +transifex-client==0.12.1 +twisted==16.6.0 +unicodecsv==0.14.1 +urllib3==1.22 +urlobject==2.4.3 +user-util==0.1.2 +virtualenv==15.2.0 +voluptuous==0.11.1 +w3lib==1.19.0 +watchdog==0.8.3 +web-fragments==0.2.2 +webob==1.8.0 +werkzeug==0.14.1 +wrapt==1.10.5 +xblock-review==1.1.5 +xblock==1.1.1 +xmltodict==0.4.1 +zendesk==1.1.1 +zope.interface==4.4.3 diff --git a/requirements/edx/django.txt b/requirements/edx/django.txt index b092a3d935a4..41e9fd2c2eb3 100644 --- a/requirements/edx/django.txt +++ b/requirements/edx/django.txt @@ -1 +1 @@ -Django==1.11.12 +django==1.11.12 diff --git a/requirements/edx/github.in b/requirements/edx/github.in new file mode 100644 index 000000000000..de309e1e6d28 --- /dev/null +++ b/requirements/edx/github.in @@ -0,0 +1,114 @@ +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files +# +# Do *NOT* install Python packages from GitHub unless it's absolutely necessary! +# "I don't have time to add automatic Travis upload to PyPI." is *not* an +# acceptable excuse. Non-wheel module installations slow down the dev/building process. +# Travis/PyPI instructions are here: +# https://openedx.atlassian.net/wiki/spaces/OpenOPS/pages/41911049/Publishing+a+Package+to+PyPI+using+Travis +# +# A correct GitHub reference looks like this: +# +# -e git+https://github.com/OWNER/REPO-NAME.git@TAG-OR-SHA#egg=DIST-NAME==VERSION +# +# For example: +# +# -e git+https://github.com/edx/edx-lint.git@v0.3.2#egg=edx_lint==0.3.2 +# +# where: +# +# OWNER = edx +# REPO-NAME = edx-lint +# TAG-OR-SHA = v0.3.2 +# DIST-NAME = edx_lint +# VERSION = 0.3.2 +# +# +# Rules to follow (even though many URLs here don't follow them!): +# +# * Don't leave out any of these pieces. +# +# * The "-e" prefix is primarily for the benefit of pip-compile, which does +# not yet support non-editable GitHub URLs. If a VERSION is correctly +# specified as shown above, the "-e" prefix will be stripped from the +# output file by the post-pip-compile.sh script. (Note that we previously +# recommended omitting this prefix, and will again if the relevant +# pip-tools issue is fixed.) +# +# * TAG-OR-SHA is the specific commit to install. It must be a git tag, +# or a git SHA commit hash. Don't use branch names here. If OWNER is +# not an edX organization, then it must be a SHA. If you use a SHA, +# please make sure there is a tag associated with it, so the commit can't +# be lost during rebase. +# +# * DIST-NAME is the distribution name, the same name you'd use in a +# "pip install" command. It might be different than REPO-NAME. It must +# be the same as the `name="DIST-NAME"` value in the repo's setup.py. +# +# * VERSION might not be the same as TAG-OR-SHA, but if the tag names the +# version, please make it match the VERSION, but with a "v" prefix. +# VERSION must be the same as the `version="VERSION"` value in the repo's +# setup.py. An alternative is to use 0.0 as VERSION: this forces pip to +# re-install the package each time, and can be useful when working with two +# repos before picking a version number. Don't use 0.0 on master, only for +# tight-loop work in progress. + + +# Python libraries to install directly from github + +# Third-party: +-e git+https://github.com/jazzband/django-pipeline.git@d068a019169c9de5ee20ece041a6dea236422852#egg=django-pipeline==1.5.3 +-e git+https://github.com/edx/django-wiki.git@v0.0.17#egg=django-wiki +-e git+https://github.com/edx/django-openid-auth.git@0.15.1#egg=django-openid-auth==0.15.1 +-e git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=MongoDBProxy==0.1.0 +-e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev +-e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip +-e git+https://github.com/jazkarta/edx-jsme.git@690dbf75441fa91c7c4899df0b83d77f7deb5458#egg=edx-jsme +-e git+https://github.com/mitodl/django-cas.git@afac57bc523f145ae826f4ed3d4fa8b2c86c5364#egg=django-cas==2.1.1 +-e git+https://github.com/dgrtwo/ParsePy.git@7949b9f754d1445eff8e8f20d0e967b9a6420639#egg=parse_rest + +# The officially released version of django-debug-toolbar-mongo doesn't support DJDT 1.x. This commit does. +-e git+https://github.com/hmarr/django-debug-toolbar-mongo.git@b0686a76f1ce3532088c4aee6e76b9abe61cc808#egg=django-debug-toolbar-mongo==0.1.10 + +# Forked to get Django 1.10+ compat that is in origin BitBucket repo, without an official build. +# This can go away when we update auth to not use django-rest-framework-oauth +-e git+https://github.com/edx/django-oauth-plus.git@01ec2a161dfc3465f9d35b9211ae790177418316#egg=django-oauth-plus==2.2.9.edx-1 + +# NOTE (CCB): This must remain. There is one commit on the upstream repo that has not been released to PyPI. +-e git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx + +# Used for testing +-e git+https://github.com/edx/lettuce.git@31b0dfd865766243e9b563ec65fae9122edf7975#egg=lettuce==0.2.23+edx.1 + +# Why a DRF fork? See: https://openedx.atlassian.net/browse/PLAT-1581 +-e git+https://github.com/edx/django-rest-framework.git@1ceda7c086fddffd1c440cc86856441bbf0bd9cb#egg=djangorestframework==3.6.3 + +# Why a drf-oauth fork? To add Django 1.11 compatibility to the abandoned repo. +# This dependency will be removed by this work: https://openedx.atlassian.net/browse/PLAT-1660 +-e git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 + +# Why a django-celery fork? To add Django 1.11 compatibility to the abandoned repo. +# This dependency will be removed by the Celery 4 upgrade: https://openedx.atlassian.net/browse/PLAT-1684 +-e git+https://github.com/edx/django-celery.git@756cb57aad765cb2b0d37372c1855b8f5f37e6b0#egg=django-celery==3.2.1+edx.2 + +# Our libraries: +-e git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail +-e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock +-e git+https://github.com/edx/edx-ora2.git@2.1.14#egg=ora2==2.1.14 +-e git+https://github.com/edx/RecommenderXBlock.git@1.3#egg=recommender-xblock==1.3 +-e git+https://github.com/solashirai/crowdsourcehinter.git@518605f0a95190949fe77bd39158450639e2e1dc#egg=crowdsourcehinter-xblock==0.1 +-e git+https://github.com/edx/RateXBlock.git@367e19c0f6eac8a5f002fd0f1559555f8e74bfff#egg=rate-xblock +-e git+https://github.com/edx/DoneXBlock.git@01a14f3bd80ae47dd08cdbbe2f88f3eb88d00fba#egg=done-xblock +-e git+https://github.com/edx/xblock-utils.git@v1.0.5#egg=xblock-utils==1.0.5 +-e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive +-e git+https://github.com/edx/xblock-lti-consumer.git@v1.1.7#egg=lti_consumer-xblock==1.1.7 + +# Third Party XBlocks + +-e git+https://github.com/mitodl/edx-sga.git@6b2f7aa2a18206023c8407e2c46f86d4b4c3ac96#egg=edx-sga==0.8.0 +-e git+https://github.com/open-craft/xblock-poll@7ba819b968fe8faddb78bb22e1fe7637005eb414#egg=xblock-poll==1.2.7 +-e git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@2.1.5#egg=xblock-drag-and-drop-v2==2.1.5 diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 66b8561a8f67..902fbbf82b9d 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -1,108 +1,4 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements -# -# Do *NOT* install Python packages from GitHub unless it's absolutely necessary! -# "I don't have time to add automatic Travis upload to PyPI." is *not* an -# acceptable excuse. Non-wheel module installations slow down the dev/building process. -# Travis/PyPI instructions are here: -# https://openedx.atlassian.net/wiki/spaces/OpenOPS/pages/41911049/Publishing+a+Package+to+PyPI+using+Travis -# -# A correct GitHub reference looks like this: -# -# git+https://github.com/OWNER/REPO-NAME.git@TAG-OR-SHA#egg=DIST-NAME==VERSION -# -# For example: -# -# git+https://github.com/edx/edx-lint.git@v0.3.2#egg=edx_lint==0.3.2 -# -# where: -# -# OWNER = edx -# REPO-NAME = edx-lint -# TAG-OR-SHA = v0.3.2 -# DIST-NAME = edx_lint -# VERSION = 0.3.2 -# -# -# Rules to follow (even though many URLs here don't follow them!): -# -# * Don't leave out any of these pieces. -# -# * Don't use -e -# -# * TAG-OR-SHA is the specific commit to install. It must be a git tag, -# or a git SHA commit hash. Don't use branch names here. If OWNER is -# not an edX organization, then it must be a SHA. If you use a SHA, -# please make sure there is a tag associated with it, so the commit can't -# be lost during rebase. -# -# * DIST-NAME is the distribution name, the same name you'd use in a -# "pip install" command. It might be different than REPO-NAME. It must -# be the same as the `name="DIST-NAME"` value in the repo's setup.py. -# -# * VERSION might not be the same as TAG-OR-SHA, but if the tag names the -# version, please make it match the VERSION, but with a "v" prefix. -# VERSION must be the same as the `version="VERSION"` value in the repo's -# setup.py. An alternative is to use 0.0 as VERSION: this forces pip to -# re-install the package each time, and can be useful when working with two -# repos before picking a version number. Don't use 0.0 on master, only for -# tight-loop work in progress. - - -# Python libraries to install directly from github - -# Third-party: -git+https://github.com/jazzband/django-pipeline.git@d068a019169c9de5ee20ece041a6dea236422852#egg=django-pipeline==1.5.3 --e git+https://github.com/edx/django-wiki.git@v0.0.17#egg=django-wiki -git+https://github.com/edx/django-openid-auth.git@0.15.1#egg=django-openid-auth==0.15.1 -git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=MongoDBProxy==0.1.0 --e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev --e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip --e git+https://github.com/jazkarta/edx-jsme.git@690dbf75441fa91c7c4899df0b83d77f7deb5458#egg=edx-jsme -git+https://github.com/mitodl/django-cas.git@afac57bc523f145ae826f4ed3d4fa8b2c86c5364#egg=django-cas==2.1.1 --e git+https://github.com/dgrtwo/ParsePy.git@7949b9f754d1445eff8e8f20d0e967b9a6420639#egg=parse_rest - -# The officially released version of django-debug-toolbar-mongo doesn't support DJDT 1.x. This commit does. -git+https://github.com/hmarr/django-debug-toolbar-mongo.git@b0686a76f1ce3532088c4aee6e76b9abe61cc808#egg=django-debug-toolbar-mongo==0.1.10 - -# Forked to get Django 1.10+ compat that is in origin BitBucket repo, without an official build. -# This can go away when we update auth to not use django-rest-framework-oauth -git+https://github.com/edx/django-oauth-plus.git@01ec2a161dfc3465f9d35b9211ae790177418316#egg=django-oauth-plus==2.2.9.edx-1 - -# NOTE (CCB): This must remain. There is one commit on the upstream repo that has not been released to PyPI. -git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx - -# Used for testing -git+https://github.com/edx/lettuce.git@31b0dfd865766243e9b563ec65fae9122edf7975#egg=lettuce==0.2.23+edx.1 - -# Why a DRF fork? See: https://openedx.atlassian.net/browse/PLAT-1581 -git+https://github.com/edx/django-rest-framework.git@1ceda7c086fddffd1c440cc86856441bbf0bd9cb#egg=djangorestframework==3.6.3 - -# Why a drf-oauth fork? To add Django 1.11 compatibility to the abandoned repo. -# This dependency will be removed by this work: https://openedx.atlassian.net/browse/PLAT-1660 -git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 - -# Why a django-celery fork? To add Django 1.11 compatibility to the abandoned repo. -# This dependency will be removed by the Celery 4 upgrade: https://openedx.atlassian.net/browse/PLAT-1684 -git+https://github.com/edx/django-celery.git@756cb57aad765cb2b0d37372c1855b8f5f37e6b0#egg=django-celery==3.2.1+edx.2 - -# Our libraries: --e git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail==0.0 --e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock -git+https://github.com/edx/edx-ora2.git@2.1.14#egg=ora2==2.1.14 -git+https://github.com/edx/RecommenderXBlock.git@1.3#egg=recommender-xblock==1.3 -git+https://github.com/solashirai/crowdsourcehinter.git@518605f0a95190949fe77bd39158450639e2e1dc#egg=crowdsourcehinter-xblock==0.1 --e git+https://github.com/edx/RateXBlock.git@367e19c0f6eac8a5f002fd0f1559555f8e74bfff#egg=rate-xblock --e git+https://github.com/edx/DoneXBlock.git@01a14f3bd80ae47dd08cdbbe2f88f3eb88d00fba#egg=done-xblock -git+https://github.com/edx/xblock-utils.git@v1.0.5#egg=xblock-utils==1.0.5 --e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive -git+https://github.com/edx/xblock-lti-consumer.git@v1.1.7#egg=lti_consumer-xblock==1.1.7 - -# Third Party XBlocks - -git+https://github.com/mitodl/edx-sga.git@6b2f7aa2a18206023c8407e2c46f86d4b4c3ac96#egg=edx-sga==0.8.0 -git+https://github.com/open-craft/xblock-poll@7ba819b968fe8faddb78bb22e1fe7637005eb414#egg=xblock-poll==1.2.7 -git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@2.1.5#egg=xblock-drag-and-drop-v2==2.1.5 +# Placeholder for code which hasn't yet been updated to no longer use this file. +# The requirements which were here have been moved to github.in, and are now +# incorporated into the appropriate full requirements files (base.txt, +# testing.txt, etc.) diff --git a/requirements/edx/local.in b/requirements/edx/local.in new file mode 100644 index 000000000000..4bd03e404965 --- /dev/null +++ b/requirements/edx/local.in @@ -0,0 +1,12 @@ +# Python libraries to install that are local to the edx-platform repo +-e . +-e common/lib/calc +-e common/lib/capa +-e common/lib/chem +-e common/lib/dogstats +-e common/lib/safe_lxml +-e common/lib/sandbox-packages +-e common/lib/symmath +-e common/lib/xmodule + +-e openedx/core/lib/xblock_builtin/xblock_discussion diff --git a/requirements/edx/local.txt b/requirements/edx/local.txt index 4bd03e404965..668857770b0a 100644 --- a/requirements/edx/local.txt +++ b/requirements/edx/local.txt @@ -1,12 +1,4 @@ -# Python libraries to install that are local to the edx-platform repo --e . --e common/lib/calc --e common/lib/capa --e common/lib/chem --e common/lib/dogstats --e common/lib/safe_lxml --e common/lib/sandbox-packages --e common/lib/symmath --e common/lib/xmodule - --e openedx/core/lib/xblock_builtin/xblock_discussion +# Placeholder for code which hasn't yet been updated to no longer use this file. +# The requirements which were here have been moved to local.in, and are now +# incorporated into the appropriate full requirements files (base.txt, +# testing.txt, etc.) diff --git a/requirements/edx/paver.in b/requirements/edx/paver.in new file mode 100644 index 000000000000..e51f84e944d3 --- /dev/null +++ b/requirements/edx/paver.in @@ -0,0 +1,23 @@ +# Requirements to run and test Paver +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files +# +edx-opaque-keys # Create and introspect course and xblock identities +lazy==1.1 # Lazily-evaluated attributes for Python objects +libsass==0.10.0 # Python bindings for the LibSass CSS compiler +markupsafe # XML/HTML/XHTML Markup safe strings +mock==1.0.1 # Stub out code with mock objects and make assertions about how they have been used +path.py==8.2.1 # Easier manipulation of filesystem paths +paver # Build, distribution and deployment scripting tool +psutil==1.2.1 # Library for retrieving information on running processes and system utilization +pymongo==2.9.1 # via edx-opaque-keys +python-memcached==1.48 # Python interface to the memcached memory cache daemon +requests==2.9.1 # Simple interface for making HTTP requests +stevedore==1.10.0 # via edx-opaque-keys +watchdog # Used in paver watch_assets +wrapt==1.10.5 # Decorator utilities used in the @timed paver task decorator diff --git a/requirements/edx/paver.txt b/requirements/edx/paver.txt index a6ada445afa4..d27788916236 100644 --- a/requirements/edx/paver.txt +++ b/requirements/edx/paver.txt @@ -1,5 +1,27 @@ -# Requirements to run and test Paver -paver==1.3.4 +# +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# + +argh==0.26.2 # via watchdog +argparse==1.4.0 # via stevedore +edx-opaque-keys==0.4.4 +lazy==1.1 libsass==0.10.0 -markupsafe --r base_common.txt +markupsafe==1.0 +mock==1.0.1 +path.py==8.2.1 +pathtools==0.1.2 # via watchdog +paver==1.3.4 +pbr==4.0.1 # via stevedore +psutil==1.2.1 +pymongo==2.9.1 +python-memcached==1.48 +pyyaml==3.12 # via watchdog +requests==2.9.1 +six==1.11.0 # via edx-opaque-keys, libsass, paver, stevedore +stevedore==1.10.0 +watchdog==0.8.3 +wrapt==1.10.5 diff --git a/requirements/edx/pip-tools.in b/requirements/edx/pip-tools.in new file mode 100644 index 000000000000..06c8949d5d9b --- /dev/null +++ b/requirements/edx/pip-tools.in @@ -0,0 +1,10 @@ +# Just the dependencies to run pip-tools, mainly for the "upgrade" make target +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files + +pip-tools # Contains pip-compile, used to generate pip requirements files diff --git a/requirements/edx/pip-tools.txt b/requirements/edx/pip-tools.txt new file mode 100644 index 000000000000..3890dd9c17b6 --- /dev/null +++ b/requirements/edx/pip-tools.txt @@ -0,0 +1,11 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# + +click==6.7 # via pip-tools +first==2.0.1 # via pip-tools +pip-tools==1.11.0 +six==1.11.0 # via pip-tools diff --git a/requirements/edx/post.txt b/requirements/edx/post.txt index 3731c81a7e74..2a93e2b6add6 100644 --- a/requirements/edx/post.txt +++ b/requirements/edx/post.txt @@ -1,12 +1,4 @@ -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should notify: -# * @edx/ospr - to check licensing -# * @edx/devops - to check system requirements - -# python-saml depends on lxml, which is referenced in base.txt. A bug exists -# in setuptools 18.0.1 which results in an infinite loop during -# resolution of this dependency during compilation. So we need to install -# python-saml only after lxml has been successfully installed. - -python-saml==2.4.0 +# Placeholder for code which hasn't yet been updated to no longer use this file. +# The requirements which were here have been moved to base.in, and are now +# incorporated into the appropriate full requirements files (base.txt, +# testing.txt, etc.) diff --git a/requirements/edx/private.readme b/requirements/edx/private.readme new file mode 100644 index 000000000000..5600a1075bcc --- /dev/null +++ b/requirements/edx/private.readme @@ -0,0 +1,15 @@ +# If there are any Python packages you want to keep in your virtualenv beyond +# those listed in the official requirements files, create a "private.in" file +# and list them there. Generate the corresponding "private.txt" file pinning +# all of their indirect dependencies to specific versions as follows: + +# pip-compile private.in + +# This allows you to use "pip-sync" without removing these packages: + +# pip-sync requirements/*.txt + +# "private.in" and "private.txt" aren't checked into git to avoid merge +# conflicts, and the presence of this file allows "private.*" to be +# included in scripted pip-sync usage without requiring that those files be +# created first. diff --git a/requirements/edx/testing.in b/requirements/edx/testing.in new file mode 100644 index 000000000000..b60cbd4215d6 --- /dev/null +++ b/requirements/edx/testing.in @@ -0,0 +1,30 @@ +# This requirements file is only for python packages that need to be installed +# for the edx-platform in testing environments. This includes: +# * Jenkins +# * devstack +# Please do not use this file for packages that are needed in production +# +# DON'T JUST ADD NEW DEPENDENCIES!!! +# +# If you open a pull request that adds a new dependency, you should: +# * verify that the dependency has a license compatible with AGPLv3 +# * confirm that it has no system requirements beyond what we already install +# * run "make upgrade" to update the detailed requirements files + +-r base.txt # Core edx-platform production dependencies +-r coverage.txt # Utilities for calculating test coverage + +edx-lint==0.5.4 # pylint extensions for Open edX repositories +isort==4.2.5 # For checking and fixing the order of imports +pa11ycrawler # Python crawler (using Scrapy) that uses Pa11y to check accessibility of pages as it crawls +pylint-django==0.7.2 # via edx-lint +pysqlite # DB-API 2.0 interface for SQLite 3.x (used as the relational database for most tests) +pytest==3.1.3 # Testing framework +pytest-attrib # Select tests based on attributes +pytest-catchlog # pytest plugin to catch log messages; merged into pytest 3.3.0 +pytest-cov # pytest plugin for measuring code coverage +pytest-django # Django support for pytest +pytest-randomly==1.2.1 # pytest plugin to randomly order tests +pytest-xdist==1.20.0 # Parallel execution of tests on multiple CPU cores or hosts +tox==2.8.2 # virtualenv management for tests +tox-battery # Makes tox aware of requirements file changes diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index 8ee74c701f47..b3c76a0083a1 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -1,24 +1,331 @@ -# This requirements file is only for python packages that need to be installed -# for the edx-platform in testing environments. This includes: -# * Jenkins -# * devstack -# Please do not use this file for packages that are needed in production # -# DON'T JUST ADD NEW DEPENDENCIES!!! -# If you have changes you would like to make, please consult with: -# * @edx/testeng - to discuss it's impact on test infrastructure -# * @edx/devops - to check system requirements +# This file is autogenerated by pip-compile +# To update, run: +# +# make upgrade +# -execnet==1.4.1 -py==1.4.34 +-e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock +-e common/lib/calc +-e common/lib/capa +-e common/lib/chem +-e git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail +git+https://github.com/solashirai/crowdsourcehinter.git@518605f0a95190949fe77bd39158450639e2e1dc#egg=crowdsourcehinter-xblock==0.1 +git+https://github.com/mitodl/django-cas.git@afac57bc523f145ae826f4ed3d4fa8b2c86c5364#egg=django-cas==2.1.1 +git+https://github.com/edx/django-celery.git@756cb57aad765cb2b0d37372c1855b8f5f37e6b0#egg=django-celery==3.2.1+edx.2 +git+https://github.com/hmarr/django-debug-toolbar-mongo.git@b0686a76f1ce3532088c4aee6e76b9abe61cc808#egg=django-debug-toolbar-mongo==0.1.10 +git+https://github.com/edx/django-oauth-plus.git@01ec2a161dfc3465f9d35b9211ae790177418316#egg=django-oauth-plus==2.2.9.edx-1 +git+https://github.com/edx/django-openid-auth.git@0.15.1#egg=django-openid-auth==0.15.1 +git+https://github.com/jazzband/django-pipeline.git@d068a019169c9de5ee20ece041a6dea236422852#egg=django-pipeline==1.5.3 +-e git+https://github.com/edx/django-wiki.git@v0.0.17#egg=django-wiki +git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 +git+https://github.com/edx/django-rest-framework.git@1ceda7c086fddffd1c440cc86856441bbf0bd9cb#egg=djangorestframework==3.6.3 +-e common/lib/dogstats +-e git+https://github.com/edx/DoneXBlock.git@01a14f3bd80ae47dd08cdbbe2f88f3eb88d00fba#egg=done-xblock +-e git+https://github.com/jazkarta/edx-jsme.git@690dbf75441fa91c7c4899df0b83d77f7deb5458#egg=edx-jsme +git+https://github.com/mitodl/edx-sga.git@6b2f7aa2a18206023c8407e2c46f86d4b4c3ac96#egg=edx-sga==0.8.0 +git+https://github.com/edx/lettuce.git@31b0dfd865766243e9b563ec65fae9122edf7975#egg=lettuce==0.2.23+edx.1 +git+https://github.com/edx/xblock-lti-consumer.git@v1.1.7#egg=lti_consumer-xblock==1.1.7 +git+https://github.com/edx/MongoDBProxy.git@25b99097615bda06bd7cdfe5669ed80dc2a7fed0#egg=MongoDBProxy==0.1.0 +-e . +git+https://github.com/edx/edx-ora2.git@2.1.14#egg=ora2==2.1.14 +-e git+https://github.com/dgrtwo/ParsePy.git@7949b9f754d1445eff8e8f20d0e967b9a6420639#egg=parse_rest +-e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip +-e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev +-e git+https://github.com/edx/RateXBlock.git@367e19c0f6eac8a5f002fd0f1559555f8e74bfff#egg=rate-xblock +git+https://github.com/edx/RecommenderXBlock.git@1.3#egg=recommender-xblock==1.3 +git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx +-e common/lib/safe_lxml +-e common/lib/sandbox-packages +-e common/lib/symmath +-e openedx/core/lib/xblock_builtin/xblock_discussion +git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@2.1.5#egg=xblock-drag-and-drop-v2==2.1.5 +-e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive +git+https://github.com/open-craft/xblock-poll@7ba819b968fe8faddb78bb22e1fe7637005eb414#egg=xblock-poll==1.2.7 +git+https://github.com/edx/xblock-utils.git@v1.0.5#egg=xblock-utils==1.0.5 +-e common/lib/xmodule +amqp==1.4.9 +analytics-python==1.1.0 +anyjson==0.3.3 +apipkg==1.4 # via execnet +appdirs==1.4.3 +argh==0.26.2 +argparse==1.4.0 +asn1crypto==0.24.0 +astroid==1.5.2 # via edx-lint, pylint, pylint-celery, pylint-plugin-utils +attrs==17.2.0 +babel==1.3 +backports.functools-lru-cache==1.5 # via astroid, pylint +beautifulsoup4==4.1.3 +beautifulsoup==3.2.1 +before_after==0.1.3 +billiard==3.3.0.23 +bleach==1.4 +bok-choy==0.7.2 +boto3==1.4.8 +boto==2.39.0 +botocore==1.8.17 +celery==3.1.25 +cffi==1.11.5 +charade==1.0.3 +chrono==1.0.2 +click-log==0.1.8 # via edx-lint +click==6.7 +colorama==0.3.9 +configparser==3.5.0 # via pylint +constantly==15.1.0 # via twisted +coverage==4.2 +cryptography==2.1.4 +cssselect==0.9.1 +cssutils==1.0.2 +ddt==0.8.0 +decorator==4.2.1 +defusedxml==0.4.1 +dicttoxml==1.7.4 +diff-cover==0.9.8 +django-appconf==1.0.2 +django-babel-underscore==0.5.2 +django-babel==0.6.2 +django-birdcage==1.0.0 +django-braces==1.12.0 +django-classy-tags==0.8.0 +django-config-models==0.1.8 +django-cors-headers==2.1.0 +django-countries==4.6.1 +django-crum==0.7.2 +django-debug-toolbar==1.8 +django-fernet-fields==0.5 +django-filter==1.0.4 +django-ipware==1.1.0 +django-memcached-hashring==0.1.2 +django-method-override==0.1.0 +django-model-utils==3.0.0 +django-mptt==0.8.7 +django-multi-email-field==0.5.1 +django-oauth-toolkit==0.12.0 +django-object-actions==0.10.0 +django-pyfs==2.0 +django-ratelimit-backend==1.1.1 +django-ratelimit==1.1.0 +django-require==1.0.11 +django-sekizai==0.10.0 +django-ses==0.8.4 +django-simple-history==2.0 +django-splash==0.2.2 +django-statici18n==1.4.0 +django-storages==1.4.1 +django-user-tasks==0.1.5 +django-waffle==0.12.0 +django-webpack-loader==0.4.1 +django_nose==1.4.1 +djangorestframework-jwt==1.11.0 +djangorestframework-xml==1.3.0 +dm.xmlsec.binding==1.3.3 +docopt==0.6.2 +docutils==0.14 +dogapi==1.2.1 +edx-ace==0.1.6 +edx-analytics-data-api-client==0.14.4 +edx-ccx-keys==0.2.1 +edx-celeryutils==0.2.7 +edx-completion==0.1.5 +edx-django-oauth2-provider==1.2.5 +edx-django-release-util==0.3.1 +edx-django-sites-extensions==2.3.1 +edx-drf-extensions==1.2.5 +edx-enterprise==0.67.3 +edx-i18n-tools==0.4.2 +edx-lint==0.5.4 +edx-milestones==0.1.13 +edx-oauth2-provider==1.2.2 +edx-opaque-keys[django]==0.4.4 +edx-organizations==0.4.10 +edx-proctoring==1.3.9 +edx-rest-api-client==1.7.1 +edx-search==1.1.0 +edx-submissions==2.0.12 +edx-user-state-client==1.0.3 +edxval==0.1.12 +elasticsearch==1.9.0 +enum34==1.1.6 +event-tracking==0.2.4 +execnet==1.5.0 # via pytest-xdist +extras==1.0.0 +factory_boy==2.8.1 +faker==0.8.12 +faulthandler==3.0 +feedparser==5.1.3 +firebase-token-generator==1.3.2 +flaky==3.4.0 +flask==0.12.2 +freezegun==0.3.8 +fs-s3fs==0.1.8 +fs==2.0.18 +future==0.16.0 +futures==3.2.0 ; python_version == "2.7" +fuzzywuzzy==0.16.0 +gitdb==0.6.4 +gitpython==0.3.2.rc1 +glob2==0.3 +gunicorn==0.17.4 +hash-ring==1.3.1 +help-tokens==1.0.3 +html5lib==0.999 +httplib2==0.11.3 +httpretty==0.8.14 +idna==2.6 +incremental==17.5.0 # via twisted +inflect==0.2.5 +ipaddr==2.1.11 +ipaddress==1.0.19 +isodate==0.6.0 +isort==4.2.5 +itsdangerous==0.24 +jinja2-pluralize==0.3.0 +jinja2==2.10 +jmespath==0.9.3 +jsondiff==1.1.1 +jsonfield==2.0.2 +kombu==3.0.37 +lazy-object-proxy==1.3.1 # via astroid +lazy==1.1 +lepl==5.1.3 +libsass==0.10.0 +loremipsum==1.0.5 +lxml==3.8.0 +mailsnake==1.6.2 +mako==1.0.2 +mando==0.3.3 +markdown==2.6.11 +markey==0.8 +markupsafe==1.0 +mccabe==0.6.1 # via pylint +mock==1.0.1 +mongoengine==0.10.0 +moto==0.3.1 +mysql-python==1.2.5 +needle==0.5.0 +networkx==1.7 +newrelic==2.106.1.88 +nltk==3.2.5 +nodeenv==1.1.1 +nose-exclude==0.5.0 +nose-faulthandler==0.1 +nose-ignore-docstring==0.2 +nose-randomly==1.2.0 +nose-xunitmp==0.3.2 +nose==1.3.7 +numpy==1.6.2 +oauth2==1.9.0.post1 +oauthlib==2.0.1 +pa11ycrawler==1.6.2 +parsel==1.4.0 # via scrapy +path.py==8.2.1 +pathtools==0.1.2 +paver==1.3.4 +pbr==4.0.1 +pdfminer==20140328 +pep8==1.5.7 +piexif==1.0.2 +pillow==3.4.0 +pluggy==0.6.0 # via tox +polib==1.0.3 +psutil==1.2.1 +py2neo==3.1.2 +py==1.5.3 # via pytest, pytest-catchlog, tox +pyasn1-modules==0.2.1 # via service-identity +pyasn1==0.4.2 # via pyasn1-modules, service-identity +pycontracts==1.7.1 +pycountry==1.20 +pycparser==2.18 +pycryptodomex==3.4.7 +pydispatcher==2.0.5 # via scrapy +pygments==2.2.0 +pygraphviz==1.1 +pyjwkest==1.3.2 +pyjwt==1.5.2 +pylint-celery==0.3 # via edx-lint +pylint-django==0.7.2 +pylint-plugin-utils==0.2.6 # via pylint-celery, pylint-django +pylint==1.7.1 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils +pymongo==2.9.1 +pynliner==0.5.2 +pyopenssl==17.5.0 # via scrapy, service-identity +pyparsing==2.0.7 +pyquery==1.2.9 pysqlite==2.8.3 -pytest==3.1.3 +pysrt==0.4.7 pytest-attrib==0.1.3 pytest-catchlog==1.2.2 pytest-cov==2.5.1 pytest-django==3.1.2 -pytest-forked==0.2 +pytest-forked==0.2 # via pytest-xdist pytest-randomly==1.2.1 pytest-xdist==1.20.0 -tox==2.8.2 +pytest==3.1.3 +python-dateutil==2.4.0 +python-levenshtein==0.12.0 +python-memcached==1.48 +python-mimeparse==1.6.0 +python-openid==2.2.5 +python-saml==2.4.0 +python-subunit==0.0.16 +python-swiftclient==3.5.0 +pytz==2016.10 +pyuca==1.1 +pyyaml==3.12 +queuelib==1.5.0 # via scrapy +radon==1.3.2 +redis==2.10.6 +reportlab==3.1.44 +requests-oauthlib==0.6.1 +requests==2.9.1 +rules==1.3 +s3transfer==0.1.12 +sailthru-client==2.2.3 +scipy==0.14.0 +scrapy==1.1.2 # via pa11ycrawler +selenium==3.11.0 +service-identity==17.0.0 # via scrapy +shapely==1.2.16 +shortuuid==0.5.0 +simplejson==3.13.2 +singledispatch==3.4.0.2 +six==1.11.0 +slumber==0.7.1 +smmap==0.9.0 +social-auth-app-django==1.2.0 +social-auth-core==1.4.0 +sorl-thumbnail==12.3 +sortedcontainers==0.9.2 +sphinx==1.1.3 +sphinx_rtd_theme==0.1.5 +splinter==0.5.4 +sqlparse==0.2.4 +stevedore==1.10.0 +sure==1.2.3 +sympy==0.7.1 +testfixtures==4.5.0 +testtools==0.9.34 +text-unidecode==1.2 tox-battery==0.5 +tox==2.8.2 +transifex-client==0.12.1 +twisted==16.6.0 # via pa11ycrawler, scrapy +unicodecsv==0.14.1 +urllib3==1.22 +urlobject==2.4.3 # via pa11ycrawler +user-util==0.1.2 +virtualenv==15.2.0 # via tox +voluptuous==0.11.1 +w3lib==1.19.0 # via parsel, scrapy +watchdog==0.8.3 +web-fragments==0.2.2 +webob==1.8.0 +werkzeug==0.14.1 +wrapt==1.10.5 +xblock-review==1.1.5 +xblock==1.1.1 +xmltodict==0.4.1 +zendesk==1.1.1 +zope.interface==4.4.3 # via twisted diff --git a/requirements/monitoring/requirements.txt b/requirements/monitoring/requirements.txt index 28cbb66860e1..918dd79bb1d9 100644 --- a/requirements/monitoring/requirements.txt +++ b/requirements/monitoring/requirements.txt @@ -1,18 +1,9 @@ # This requirements.txt file is meant to pull in other requirements.txt files so that # dependency monitoring tools like gemnasium.com can easily process them. -# It can not be used to do the full installation because it is not in the correct -# order, and because we pin setuptools which needs to be installed in a different -# process than the rest of the requirements. +# These tools should be updated to use requirements/edx/development.txt +# instead, as that is now a comprehensive collection of all dependencies +# used to run, test, or develop LMS and Studio. Then this file can be +# safely deleted. -r ../edx/development.txt - -# Requirements for the web application --r ../edx/pre.txt --r ../edx/django.txt --r ../edx/base.txt --r ../edx/local.txt --r ../edx/github.txt --r ../edx/edx-private.txt --r ../edx/paver.txt --r ../edx/post.txt diff --git a/requirements/monitoring/sandbox-requirements.txt b/requirements/monitoring/sandbox-requirements.txt index 8b1b66623f7c..d3cacb6ccd20 100644 --- a/requirements/monitoring/sandbox-requirements.txt +++ b/requirements/monitoring/sandbox-requirements.txt @@ -1,8 +1,8 @@ # This requirements.txt file is meant to pull in other requirements.txt files so that # dependency monitoring tools like gemnasium.com can easily process them. -# Requirements for code sandboxes --r ../edx-sandbox/base.txt --r ../edx-sandbox/local.txt --r ../edx-sandbox/post.txt +# These tools should be updated to use requirements/edx-sandbox/base.txt +# instead, as that is now a comprehensive collection of all dependencies +# installed in code sandboxes. Then this file can be safely deleted. +-r ../edx-sandbox/base.txt diff --git a/scripts/post-pip-compile.sh b/scripts/post-pip-compile.sh new file mode 100755 index 000000000000..688064cc0544 --- /dev/null +++ b/scripts/post-pip-compile.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -e + +# Remove any cruft from a requirements file generated by pip-tools which we don't want to keep + +function show_help { + echo "Usage: post-pip-compile.sh file ..." + echo "Remove any cruft left behind by pip-compile in the given requirements file(s)." + echo "" + echo "Removes devstack-specific pip options and \"-e\" prefixes which were" + echo "added to GitHub URLs only so that pip-compile could process them" + echo "correctly." +} + +function clean_file { + FILE_PATH=$1 + TEMP_FILE=${FILE_PATH}.tmp + # pip-compile captures the devpi-related settings from devstack's pip.conf, remove them + sed '/^--index-url/d' ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} + sed '/^--trusted-host/d' ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} + # If an editable VCS URL has a version number suffix, it was only editable for pip-compile's benefit; + # this is a workaround for https://github.com/jazzband/pip-tools/issues/355 + sed 's/-e \(.*==.*\)/\1/' ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} + # Workaround for https://github.com/jazzband/pip-tools/issues/204 - + # change absolute paths for local editable packages back to relative ones + FILE_CONTENT=$(<${FILE_PATH}) + FILE_URL_REGEX="-e (file:///[^'$'\n'']*)/common/lib/symmath" + if [[ "${FILE_CONTENT}" =~ ${FILE_URL_REGEX} ]]; then + BASE_FILE_URL=${BASH_REMATCH[1]} + sed "s|$BASE_FILE_URL/||" ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} + sed "s|$BASE_FILE_URL|.|" ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} + fi + # Replace the instructions for regenerating the output file. + INPUT_FILE=${FILE_PATH/\.txt/\.in} + sed "s/pip-compile --output-file.*/make upgrade/" ${FILE_PATH} > ${TEMP_FILE} + mv ${TEMP_FILE} ${FILE_PATH} +} + +for i in "$@"; do + case ${i} in + -h|--help) + # help or unknown option + show_help + exit 0 + ;; + *) + clean_file ${i} + ;; + esac +done diff --git a/tox.ini b/tox.ini index 65d58999dbc0..9e05e21bdd04 100644 --- a/tox.ini +++ b/tox.ini @@ -48,23 +48,12 @@ deps = django19: Django>=1.9,<1.10 django110: Django>=1.10,<1.11 django111: Django>=1.11,<2 - -rrequirements/edx/pre.txt - -rrequirements/edx/github.txt - -rrequirements/edx/local.txt - -rrequirements/edx/base.txt - -rrequirements/edx/development.txt -rrequirements/edx/testing.txt - -rrequirements/edx/post.txt - -rrequirements/edx-sandbox/base.txt - -rrequirements/edx-sandbox/local.txt - -rrequirements/edx-sandbox/post.txt whitelist_externals = /bin/bash /usr/bin/curl /bin/tar commands = - # There's 1-2 tests which call a paver command... - pip install -rrequirements/edx/paver.txt # Upgrade sqlite to fix crashes during testing. bash scripts/upgrade_pysqlite.sh # Now perform testing.