# 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                               # Reduces boilerplate code involving class attributes
Babel==1.3                          # Internationalization utilities, used for date formatting in a few places
bleach==1.4                         # Allowed-list-based HTML sanitizing library that escapes or strips markup and attributes; used for capa and LTI
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
ddt==0.8.0                          # via xblock-drag-and-drop-v2 (which probably shouldn't require it)
defusedxml==0.4.1                   # XML bomb protection for common XML parsers
Django==1.11.13                     # Web application framework
django-babel-underscore             # underscore template extractor for django-babel (internationalization utilities)
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-crum                         # Middleware that stores the current request and user in thread local storage
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-mysql
django-oauth-toolkit==0.12.0
django-pyfs
django-ratelimit
django-ratelimit-backend==1.1.1
django-require
django-rest-swagger                 # API documentation
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               # Used to wire webpack bundles into the django asset pipeline
djangorestframework-jwt
dogapi==1.2.1                       # Python bindings to Datadog's API, for metrics gathering
edx-ace==0.1.8
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-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==1.1.6                       # Backport of Enum from Python 3.4+
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
glob2==0.3                          # Enhanced glob module, used in openedx.core.lib.rooted_paths
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                            # New Relic agent for performance monitoring
nodeenv==1.1.1                      # Utility for managing Node.js environments; we use this for deployments and testing
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.
py2neo<4.0.0                       # Used to communicate with Neo4j, which is used internally for modulestore inspection
PyContracts==1.7.1
pycountry==1.20
pycryptodomex==3.4.7
pygments==2.2.0                     # Used to support colors in paver command output
pygraphviz==1.1                     # No longer in use?  Optional dependency of networkx, from edx-sandbox/shared.in
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==2.4.0
pyuca==1.1                          # For more accurate sorting of translated country names in django-countries
reportlab==3.1.44                   # Used for shopping cart's pdf invoice/receipt generation
rfc6266-parser                      # Used to generate Content-Disposition headers.
social-auth-app-django
social-auth-core
pysrt==0.4.7                        # Support for SubRip subtitle files, used in the video XModule
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            # Simplifies use of OAuth via the requests library, used for CCX and LTI
rules                               # Django extension for rules-based authorization checks
sailthru-client==2.2.3              # For Sailthru integration
Shapely==1.2.16                     # Geometry library, used for image click regions in capa
six                                 # Utilities for supporting Python 2 & 3 in the same codebase
sorl-thumbnail==12.3                # Image thumbnail management
sortedcontainers==0.9.2             # Provides SortedListWithKey, used for lists of XBlock assets
stevedore                           # Support for runtime plugins, used for XBlocks and edx-platform Django app plugins
unicodecsv                          # Easier support for CSV files with unicode text
user-util                           # Functionality for retiring users (GDPR compliance)
web-fragments                       # Provides the ability to render fragments of web pages
XBlock                              # Courseware component architecture
xblock-review                       # XBlock which displays problems from earlier in the course for ungraded retries
zendesk                             # Python API for the Zendesk customer support system
