Mini-RCA doc: ubuntu-latest issues on edx-platform
- Diana Huang
October 9 (overnight):
edx-platform build started failing when ubuntu-latest rolled over from 22.04 to 24.04:
unsuccessful jobs were running into two issues:
undefined symbol: xmlSecOpenSSLTransformRsaMd5GetKlass
mongodb-org-mongos : Depends: libssl1.1 (>= 1.1.1) but it is not installable
October 10:
2U fixes both issues in the same PR: https://github.com/openedx/edx-platform/pull/35634
use the jammy repositories to install mongo (the noble repositories do not have mongo 7.0, which is the version we use): https://github.com/openedx/edx-platform/pull/35634/commits/126cdb14c57c1ddbc5d97937bfef263ca0d76b5e
unpin xml-sec and lxml and upgrade all dependencies: https://github.com/openedx/edx-platform/pull/35634/commits/b0f6af92f823ca0de8f8256f29ee005f4da612e9
When attempting to deploy to edx.org, 2U runs into this error:
AssertionError: Internal issue: Candidate is not for this requirement lxml[html-clean,html-clean] vs lxml[html-clean]
this is probably already related to the breaking changes referred to in the lxml upgrade ticket: https://github.com/openedx/edx-platform/issues/35272
2U puts together a PR to revert out the changes and pin to 22.04: Revert out updates and pins many of the jobs to Ubuntu 22.04 by dianakhuang · Pull Request #35635 · openedx/edx-platform
This PR is blocked because the static assets check was required and still referred to ubuntu-latest
FAILED - RETRYING: install python requirements (1 retries left).
failed: [10.3.11.223] (item={'changed': False, 'stat': {'exists': True, 'path': '/edx/app/edxapp/edx-platform/requirements/edx/base.txt', 'mode': '0664', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 1038, 'gid': 1039, 'size': 30361, 'inode': 4914286, 'dev': 66306, 'nlink': 1, 'atime': 1728591811.6928587, 'mtime': 1728591811.6928587, 'ctime': 1728591811.6928587, 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': True, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False, 'blocks': 64, 'block_size': 4096, 'device_type': 0, 'readable': True, 'writeable': True, 'executable': False, 'pw_name': 'edxapp', 'gr_name': 'edxapp', 'checksum': '1b337c7a7d1905394f19b8f4c5b144e45ff38f42', 'mimetype': 'text/plain', 'charset': 'us-ascii', 'version': '409460603', 'attributes': ['extents'], 'attr_flags': 'e'}, 'invocation': {'module_args': {'path': '/edx/app/edxapp/edx-platform/requirements/edx/base.txt', 'follow': False, 'get_md5': False, 'get_checksum': True, 'get_mime': True, 'get_attributes': True, 'checksum_algorithm': 'sha1'}}, 'failed': False, 'item': '/edx/app/edxapp/edx-platform/requirements/edx/base.txt', 'ansible_loop_var': 'item'}) => {
"ansible_loop_var": "item",
"attempts": 5,
"changed": true,
"cmd": [
"/edx/app/edxapp/venvs/edxapp/bin/pip",
"install",
"-i",
"https://pypi.python.org/simple",
"--exists-action",
"w",
"-r",
"/edx/app/edxapp/edx-platform/requirements/edx/base.txt"
],
"delta": "0:00:44.422824",
"end": "2024-10-10 20:29:25.108155",
"item": {
"ansible_loop_var": "item",
"changed": false,
"failed": false,
"invocation": {
"module_args": {
"checksum_algorithm": "sha1",
"follow": false,
"get_attributes": true,
"get_checksum": true,
"get_md5": false,
"get_mime": true,
"path": "/edx/app/edxapp/edx-platform/requirements/edx/base.txt"
}
},
"item": "/edx/app/edxapp/edx-platform/requirements/edx/base.txt",
"stat": {
"atime": 1728591811.6928587,
"attr_flags": "e",
"attributes": [
"extents"
],
"block_size": 4096,
"blocks": 64,
"charset": "us-ascii",
"checksum": "1b337c7a7d1905394f19b8f4c5b144e45ff38f42",
"ctime": 1728591811.6928587,
"dev": 66306,
"device_type": 0,
"executable": false,
"exists": true,
"gid": 1039,
"gr_name": "edxapp",
"inode": 4914286,
"isblk": false,
"ischr": false,
"isdir": false,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": true,
"issock": false,
"isuid": false,
"mimetype": "text/plain",
"mode": "0664",
"mtime": 1728591811.6928587,
"nlink": 1,
"path": "/edx/app/edxapp/edx-platform/requirements/edx/base.txt",
"pw_name": "edxapp",
"readable": true,
"rgrp": true,
"roth": true,
"rusr": true,
"size": 30361,
"uid": 1038,
"version": "409460603",
"wgrp": true,
"woth": false,
"writeable": true,
"wusr": true,
"xgrp": false,
"xoth": false,
"xusr": false
}
},
"rc": 2,
"start": "2024-10-10 20:28:40.685331"
}
STDOUT:
Looking in indexes: https://pypi.python.org/simple
Obtaining edx_proctoring_proctortrack from git+https://github.com/anupdhabarde/edx-proctoring-proctortrack.git@31c6c9923a51c903ae83760ecbbac191363aa2a2#egg=edx_proctoring_proctortrack (from -r /edx/app/edxapp/edx-platform/requirements/edx/base.txt (line 7))
Skipping because already up-to-date.
Collecting py2neo@ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz
Using cached https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-2021.2.3.tar.gz (158 kB)
Collecting acid-xblock==0.4.1
Using cached acid_xblock-0.4.1-py3-none-any.whl (24 kB)
Collecting aiohappyeyeballs==2.4.3
Using cached aiohappyeyeballs-2.4.3-py3-none-any.whl (14 kB)
Collecting aiohttp==3.10.9
Using cached aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
Collecting aiosignal==1.3.1
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting algoliasearch==3.0.0
Using cached algoliasearch-3.0.0-py2.py3-none-any.whl (33 kB)
Collecting amqp==5.2.0
Using cached amqp-5.2.0-py3-none-any.whl (50 kB)
Collecting analytics-python==1.4.post1
Using cached analytics_python-1.4.post1-py2.py3-none-any.whl (23 kB)
Collecting aniso8601==9.0.1
Using cached aniso8601-9.0.1-py2.py3-none-any.whl (52 kB)
Collecting annotated-types==0.7.0
Using cached annotated_types-0.7.0-py3-none-any.whl (13 kB)
Collecting appdirs==1.4.4
Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting asgiref==3.8.1
Using cached asgiref-3.8.1-py3-none-any.whl (23 kB)
Collecting asn1crypto==1.5.1
Using cached asn1crypto-1.5.1-py2.py3-none-any.whl (105 kB)
Collecting attrs==24.2.0
Using cached attrs-24.2.0-py3-none-any.whl (63 kB)
Collecting babel==2.16.0
Using cached babel-2.16.0-py3-none-any.whl (9.6 MB)
Collecting backoff==1.10.0
Using cached backoff-1.10.0-py2.py3-none-any.whl (31 kB)
Collecting bcrypt==4.2.0
Using cached bcrypt-4.2.0-cp39-abi3-manylinux_2_28_x86_64.whl (273 kB)
Collecting beautifulsoup4==4.12.3
Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
Collecting billiard==4.2.1
Using cached billiard-4.2.1-py3-none-any.whl (86 kB)
Collecting bleach[css]==6.1.0
Using cached bleach-6.1.0-py3-none-any.whl (162 kB)
Collecting boto==2.49.0
Using cached boto-2.49.0-py2.py3-none-any.whl (1.4 MB)
Collecting boto3==1.35.37
Using cached boto3-1.35.37-py3-none-any.whl (139 kB)
Collecting botocore==1.35.37
Using cached botocore-1.35.37-py3-none-any.whl (12.6 MB)
Collecting bridgekeeper==0.9
Using cached bridgekeeper-0.9-py3-none-any.whl (20 kB)
Collecting cachecontrol==0.14.0
Using cached cachecontrol-0.14.0-py3-none-any.whl (22 kB)
Collecting cachetools==5.5.0
Using cached cachetools-5.5.0-py3-none-any.whl (9.5 kB)
Collecting camel-converter[pydantic]==4.0.1
Using cached camel_converter-4.0.1-py3-none-any.whl (6.2 kB)
Collecting celery==5.4.0
Using cached celery-5.4.0-py3-none-any.whl (425 kB)
Collecting certifi==2024.8.30
Using cached certifi-2024.8.30-py3-none-any.whl (167 kB)
Collecting cffi==1.17.1
Using cached cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (467 kB)
Collecting chardet==5.2.0
Using cached chardet-5.2.0-py3-none-any.whl (199 kB)
Collecting charset-normalizer==2.0.12
Using cached charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting chem==1.3.0
Using cached chem-1.3.0-py3-none-any.whl (24 kB)
Collecting click==8.1.6
Using cached click-8.1.6-py3-none-any.whl (97 kB)
Collecting click-didyoumean==0.3.1
Using cached click_didyoumean-0.3.1-py3-none-any.whl (3.6 kB)
Collecting click-plugins==1.1.1
Using cached click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Collecting click-repl==0.3.0
Using cached click_repl-0.3.0-py3-none-any.whl (10 kB)
Collecting code-annotations==1.8.0
Using cached code_annotations-1.8.0-py2.py3-none-any.whl (39 kB)
Collecting codejail-includes==1.0.0
Using cached codejail_includes-1.0.0-py2.py3-none-any.whl (25 kB)
Collecting crowdsourcehinter-xblock==0.7
Using cached crowdsourcehinter_xblock-0.7-py3-none-any.whl (34 kB)
Collecting cryptography==43.0.1
Using cached cryptography-43.0.1-cp39-abi3-manylinux_2_28_x86_64.whl (4.0 MB)
Collecting cssutils==2.11.1
Using cached cssutils-2.11.1-py3-none-any.whl (385 kB)
Collecting defusedxml==0.7.1
Using cached defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
Collecting django==4.2.16
Using cached Django-4.2.16-py3-none-any.whl (8.0 MB)
Collecting django-appconf==1.0.6
Using cached django_appconf-1.0.6-py3-none-any.whl (6.4 kB)
Collecting django-cache-memoize==0.2.0
Using cached django_cache_memoize-0.2.0-py3-none-any.whl (14 kB)
Collecting django-celery-results==2.5.1
Using cached django_celery_results-2.5.1-py3-none-any.whl (36 kB)
Collecting django-classy-tags==4.1.0
Using cached django_classy_tags-4.1.0-py3-none-any.whl (14 kB)
Collecting django-config-models==2.7.0
Using cached django_config_models-2.7.0-py2.py3-none-any.whl (30 kB)
Collecting django-cors-headers==4.4.0
Using cached django_cors_headers-4.4.0-py3-none-any.whl (12 kB)
Collecting django-countries==7.6.1
Using cached django_countries-7.6.1-py3-none-any.whl (864 kB)
Collecting django-crum==0.7.9
Using cached django_crum-0.7.9-py2.py3-none-any.whl (4.7 kB)
Collecting django-fernet-fields-v2==0.9
Using cached django_fernet_fields_v2-0.9-py3-none-any.whl (8.7 kB)
Collecting django-filter==24.3
Using cached django_filter-24.3-py3-none-any.whl (95 kB)
Collecting django-ipware==7.0.1
Using cached django_ipware-7.0.1-py2.py3-none-any.whl (6.4 kB)
Collecting django-js-asset==2.2.0
Using cached django_js_asset-2.2.0-py3-none-any.whl (4.7 kB)
Collecting django-method-override==1.0.4
Using cached django_method_override-1.0.4-py3-none-any.whl (5.2 kB)
Collecting django-model-utils==5.0.0
Using cached django_model_utils-5.0.0-py3-none-any.whl (42 kB)
Collecting django-mptt==0.16.0
Using cached django_mptt-0.16.0-py3-none-any.whl (115 kB)
Collecting django-multi-email-field==0.7.0
Using cached django_multi_email_field-0.7.0-py3-none-any.whl (11 kB)
Collecting django-mysql==4.14.0
Using cached django_mysql-4.14.0-py3-none-any.whl (55 kB)
Collecting django-oauth-toolkit==1.7.1
Using cached django_oauth_toolkit-1.7.1-py3-none-any.whl (63 kB)
Collecting django-object-actions==4.3.0
Using cached django_object_actions-4.3.0-py3-none-any.whl (19 kB)
Collecting django-pipeline==3.1.0
Using cached django_pipeline-3.1.0-py3-none-any.whl (40 kB)
Collecting django-push-notifications==3.1.0
Using cached django-push-notifications-3.1.0.tar.gz (54 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting django-ratelimit==4.1.0
Using cached django_ratelimit-4.1.0-py2.py3-none-any.whl (11 kB)
Collecting django-sekizai==4.1.0
Using cached django_sekizai-4.1.0-py3-none-any.whl (8.6 kB)
Collecting django-ses==4.2.0
Using cached django_ses-4.2.0-py3-none-any.whl (32 kB)
Collecting django-simple-history==3.4.0
Using cached django_simple_history-3.4.0-py3-none-any.whl (121 kB)
Collecting django-statici18n==2.5.0
Using cached django_statici18n-2.5.0-py2.py3-none-any.whl (9.2 kB)
Collecting django-storages==1.14.3
Using cached django_storages-1.14.3-py3-none-any.whl (47 kB)
Collecting django-user-tasks==3.2.0
Using cached django_user_tasks-3.2.0-py2.py3-none-any.whl (26 kB)
Collecting django-waffle==4.1.0
Using cached django_waffle-4.1.0-py3-none-any.whl (46 kB)
Collecting django-webpack-loader==0.7.0
Using cached django_webpack_loader-0.7.0-py2.py3-none-any.whl (14 kB)
Collecting djangorestframework==3.14.0
Using cached djangorestframework-3.14.0-py3-none-any.whl (1.1 MB)
Collecting djangorestframework-xml==2.0.0
Using cached djangorestframework_xml-2.0.0-py2.py3-none-any.whl (6.0 kB)
Collecting dnspython==2.7.0
Using cached dnspython-2.7.0-py3-none-any.whl (313 kB)
Collecting done-xblock==2.4.0
Using cached done_xblock-2.4.0-py3-none-any.whl (21 kB)
Collecting drf-jwt==1.19.2
Using cached drf_jwt-1.19.2-py2.py3-none-any.whl (21 kB)
Collecting drf-spectacular==0.27.2
Using cached drf_spectacular-0.27.2-py3-none-any.whl (102 kB)
Collecting drf-yasg==1.21.7
Using cached drf_yasg-1.21.7-py3-none-any.whl (4.3 MB)
Collecting edx-ace==1.11.2
Using cached edx_ace-1.11.2-py2.py3-none-any.whl (65 kB)
Collecting edx-api-doc-tools==2.0.0
Using cached edx_api_doc_tools-2.0.0-py2.py3-none-any.whl (14 kB)
Collecting edx-auth-backends==4.4.0
Using cached edx_auth_backends-4.4.0-py2.py3-none-any.whl (29 kB)
Collecting edx-braze-client==0.2.5
Using cached edx_braze_client-0.2.5-py2.py3-none-any.whl (34 kB)
Collecting edx-bulk-grades==1.1.0
Using cached edx_bulk_grades-1.1.0-py2.py3-none-any.whl (31 kB)
Collecting edx-ccx-keys==1.3.0
Using cached edx_ccx_keys-1.3.0-py3-none-any.whl (16 kB)
Collecting edx-celeryutils==1.3.0
Using cached edx_celeryutils-1.3.0-py2.py3-none-any.whl (17 kB)
Collecting edx-codejail==3.4.1
Using cached edx_codejail-3.4.1-py3-none-any.whl (24 kB)
Collecting edx-completion==4.7.2
Using cached edx_completion-4.7.2-py2.py3-none-any.whl (45 kB)
Collecting edx-django-release-util==1.4.0
Using cached edx_django_release_util-1.4.0-py2.py3-none-any.whl (40 kB)
Collecting edx-django-sites-extensions==4.2.0
Using cached edx_django_sites_extensions-4.2.0-py3-none-any.whl (18 kB)
Collecting edx-django-utils==6.0.0
Using cached edx_django_utils-6.0.0-py2.py3-none-any.whl (120 kB)
Collecting edx-drf-extensions==10.4.0
Using cached edx_drf_extensions-10.4.0-py2.py3-none-any.whl (76 kB)
Collecting edx-enterprise==4.27.2
Using cached edx_enterprise-4.27.2-py3-none-any.whl (1.1 MB)
Collecting edx-event-bus-kafka==5.8.1
Using cached edx_event_bus_kafka-5.8.1-py2.py3-none-any.whl (58 kB)
Collecting edx-event-bus-redis==0.5.0
Using cached edx_event_bus_redis-0.5.0-py2.py3-none-any.whl (34 kB)
Collecting edx-i18n-tools==1.6.3
Using cached edx_i18n_tools-1.6.3-py2.py3-none-any.whl (32 kB)
Collecting edx-milestones==0.6.0
Using cached edx_milestones-0.6.0-py2.py3-none-any.whl (39 kB)
Collecting edx-name-affirmation==3.0.1
Using cached edx_name_affirmation-3.0.1-py2.py3-none-any.whl (57 kB)
Collecting edx-opaque-keys[django]==2.11.0
Using cached edx_opaque_keys-2.11.0-py3-none-any.whl (74 kB)
Collecting edx-organizations==6.13.0
Using cached edx_organizations-6.13.0-py3-none-any.whl (52 kB)
Collecting edx-proctoring==4.18.2
Using cached edx_proctoring-4.18.2-py2.py3-none-any.whl (1.3 MB)
Collecting edx-rbac==1.10.0
Using cached edx_rbac-1.10.0-py2.py3-none-any.whl (39 kB)
Collecting edx-rest-api-client==6.0.0
Using cached edx_rest_api_client-6.0.0-py3-none-any.whl (12 kB)
Collecting edx-search==4.0.0
Using cached edx_search-4.0.0-py3-none-any.whl (61 kB)
Collecting edx-sga==0.25.0
Using cached edx_sga-0.25.0-py3-none-any.whl (439 kB)
Collecting edx-submissions==3.8.1
Using cached edx_submissions-3.8.1-py3-none-any.whl (48 kB)
Collecting edx-tincan-py35==1.0.0
Using cached edx_tincan_py35-1.0.0-py3-none-any.whl (58 kB)
Collecting edx-toggles==5.2.0
Using cached edx_toggles-5.2.0-py2.py3-none-any.whl (32 kB)
Collecting edx-token-utils==0.2.1
Using cached edx_token_utils-0.2.1-py2.py3-none-any.whl (22 kB)
Collecting edx-when==2.5.0
Using cached edx_when-2.5.0-py2.py3-none-any.whl (33 kB)
Collecting edxval==2.6.0
Using cached edxval-2.6.0-py3-none-any.whl (82 kB)
Collecting elasticsearch==7.13.4
Using cached elasticsearch-7.13.4-py2.py3-none-any.whl (356 kB)
Collecting enmerkar==0.7.1
Using cached enmerkar-0.7.1-py3-none-any.whl (12 kB)
Collecting enmerkar-underscore==2.3.1
Using cached enmerkar_underscore-2.3.1-py2.py3-none-any.whl (12 kB)
Collecting event-tracking==3.0.0
Using cached event_tracking-3.0.0-py3-none-any.whl (54 kB)
Collecting fastavro==1.9.7
Using cached fastavro-1.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB)
Collecting filelock==3.16.1
Using cached filelock-3.16.1-py3-none-any.whl (16 kB)
Collecting firebase-admin==6.5.0
Using cached firebase_admin-6.5.0-py3-none-any.whl (126 kB)
Collecting frozenlist==1.4.1
Using cached frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (272 kB)
Collecting fs==2.0.27
Using cached fs-2.0.27-py2.py3-none-any.whl (119 kB)
Collecting fs-s3fs==0.1.8
Using cached fs_s3fs-0.1.8-py2.py3-none-any.whl (10 kB)
Collecting future==1.0.0
Using cached future-1.0.0-py3-none-any.whl (491 kB)
Collecting geoip2==4.8.0
Using cached geoip2-4.8.0-py2.py3-none-any.whl (27 kB)
Collecting glob2==0.7
Using cached glob2-0.7.tar.gz (10 kB)
Collecting google-api-core[grpc]==2.21.0
Using cached google_api_core-2.21.0-py3-none-any.whl (156 kB)
Collecting google-api-python-client==2.149.0
Using cached google_api_python_client-2.149.0-py2.py3-none-any.whl (12.3 MB)
Collecting google-auth==2.35.0
Using cached google_auth-2.35.0-py2.py3-none-any.whl (208 kB)
Collecting google-auth-httplib2==0.2.0
Using cached google_auth_httplib2-0.2.0-py2.py3-none-any.whl (9.3 kB)
Collecting google-cloud-core==2.4.1
Using cached google_cloud_core-2.4.1-py2.py3-none-any.whl (29 kB)
Collecting google-cloud-firestore==2.19.0
Using cached google_cloud_firestore-2.19.0-py2.py3-none-any.whl (336 kB)
Collecting google-cloud-storage==2.18.2
Using cached google_cloud_storage-2.18.2-py2.py3-none-any.whl (130 kB)
Collecting google-crc32c==1.6.0
Using cached google_crc32c-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32 kB)
Collecting google-resumable-media==2.7.2
Using cached google_resumable_media-2.7.2-py2.py3-none-any.whl (81 kB)
Collecting googleapis-common-protos==1.65.0
Using cached googleapis_common_protos-1.65.0-py2.py3-none-any.whl (220 kB)
Collecting grpcio==1.66.2
Using cached grpcio-1.66.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.8 MB)
Collecting grpcio-status==1.66.2
Using cached grpcio_status-1.66.2-py3-none-any.whl (14 kB)
Collecting gunicorn==23.0.0
Using cached gunicorn-23.0.0-py3-none-any.whl (85 kB)
Collecting help-tokens==2.4.0
Using cached help_tokens-2.4.0-py2.py3-none-any.whl (19 kB)
Collecting html5lib==1.1
Using cached html5lib-1.1-py2.py3-none-any.whl (112 kB)
Collecting httplib2==0.22.0
Using cached httplib2-0.22.0-py3-none-any.whl (96 kB)
Collecting icalendar==6.0.0
Using cached icalendar-6.0.0-py3-none-any.whl (126 kB)
Collecting idna==3.10
Using cached idna-3.10-py3-none-any.whl (70 kB)
Collecting importlib-metadata==8.5.0
Using cached importlib_metadata-8.5.0-py3-none-any.whl (26 kB)
Collecting inflection==0.5.1
Using cached inflection-0.5.1-py2.py3-none-any.whl (9.5 kB)
Collecting interchange==2021.0.4
Using cached interchange-2021.0.4-py2.py3-none-any.whl (28 kB)
Collecting ipaddress==1.0.23
Using cached ipaddress-1.0.23-py2.py3-none-any.whl (18 kB)
Collecting isodate==0.7.2
Using cached isodate-0.7.2-py3-none-any.whl (22 kB)
Collecting jinja2==3.1.4
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Collecting jmespath==1.0.1
Using cached jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting joblib==1.4.2
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Collecting jsondiff==2.2.1
Using cached jsondiff-2.2.1-py3-none-any.whl (13 kB)
Collecting jsonfield==3.1.0
Using cached jsonfield-3.1.0-py3-none-any.whl (8.0 kB)
Collecting jsonschema==4.23.0
Using cached jsonschema-4.23.0-py3-none-any.whl (88 kB)
Collecting jsonschema-specifications==2024.10.1
Using cached jsonschema_specifications-2024.10.1-py3-none-any.whl (18 kB)
Collecting jwcrypto==1.5.6
Using cached jwcrypto-1.5.6-py3-none-any.whl (92 kB)
Collecting kombu==5.4.2
Using cached kombu-5.4.2-py3-none-any.whl (201 kB)
Collecting laboratory==1.0.2
Using cached laboratory-1.0.2-py2.py3-none-any.whl (9.4 kB)
Collecting lazy==1.6
Using cached lazy-1.6-py2.py3-none-any.whl (5.2 kB)
Collecting libsass==0.10.0
Using cached libsass-0.10.0.tar.gz (272 kB)
Collecting loremipsum==1.0.5
Using cached loremipsum-1.0.5.zip (14 kB)
Collecting lti-consumer-xblock==9.11.3
Using cached lti_consumer_xblock-9.11.3-py3-none-any.whl (390 kB)
Collecting lxml[html-clean]==5.3.0
Using cached lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl (5.0 MB)
Collecting lxml-html-clean==0.3.1
Using cached lxml_html_clean-0.3.1-py3-none-any.whl (13 kB)
Collecting mailsnake==1.6.4
Using cached mailsnake-1.6.4.tar.gz (6.6 kB)
Collecting mako==1.3.5
Using cached Mako-1.3.5-py3-none-any.whl (78 kB)
Collecting markdown==3.3.7
Using cached Markdown-3.3.7-py3-none-any.whl (97 kB)
Collecting markupsafe==3.0.1
Using cached MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23 kB)
Collecting maxminddb==2.6.2
Using cached maxminddb-2.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (87 kB)
Collecting meilisearch==0.31.5
Using cached meilisearch-0.31.5-py3-none-any.whl (23 kB)
Collecting mock==5.1.0
Using cached mock-5.1.0-py3-none-any.whl (30 kB)
Collecting mongoengine==0.29.1
Using cached mongoengine-0.29.1-py3-none-any.whl (112 kB)
Collecting monotonic==1.6
Using cached monotonic-1.6-py2.py3-none-any.whl (8.2 kB)
Collecting more-itertools==10.5.0
Using cached more_itertools-10.5.0-py3-none-any.whl (60 kB)
Collecting mpmath==1.3.0
Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)
Collecting msgpack==1.1.0
Using cached msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (403 kB)
Collecting multidict==6.1.0
Using cached multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (129 kB)
Collecting mysqlclient==2.2.4
Using cached mysqlclient-2.2.4.tar.gz (90 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting newrelic==10.0.0
Using cached newrelic-10.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (809 kB)
Collecting nh3==0.2.18
Using cached nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (769 kB)
Collecting nltk==3.9.1
Using cached nltk-3.9.1-py3-none-any.whl (1.5 MB)
Collecting nodeenv==1.9.1
Using cached nodeenv-1.9.1-py2.py3-none-any.whl (22 kB)
Collecting numpy==1.26.4
Using cached numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.3 MB)
Collecting oauthlib==3.2.2
Using cached oauthlib-3.2.2-py3-none-any.whl (151 kB)
Collecting olxcleaner==0.3.0
Using cached olxcleaner-0.3.0-py3-none-any.whl (57 kB)
Collecting openai==0.28.1
Using cached openai-0.28.1-py3-none-any.whl (76 kB)
Collecting openedx-atlas==0.6.2
Using cached openedx_atlas-0.6.2-py3-none-any.whl (21 kB)
Collecting openedx-calc==3.1.2
Using cached openedx_calc-3.1.2-py3-none-any.whl (34 kB)
Collecting openedx-django-pyfs==3.7.0
Using cached openedx_django_pyfs-3.7.0-py3-none-any.whl (13 kB)
Collecting openedx-django-require==2.1.0
Using cached openedx_django_require-2.1.0-py3-none-any.whl (7.2 MB)
Collecting openedx-django-wiki==2.1.0
Using cached openedx_django_wiki-2.1.0-py3-none-any.whl (666 kB)
Collecting openedx-events==9.14.1
Using cached openedx_events-9.14.1-py2.py3-none-any.whl (76 kB)
Collecting openedx-filters==1.11.0
Using cached openedx_filters-1.11.0-py2.py3-none-any.whl (33 kB)
Collecting openedx-learning==0.13.1
Using cached openedx_learning-0.13.1-py2.py3-none-any.whl (163 kB)
Collecting openedx-mongodbproxy==0.2.2
Using cached openedx_mongodbproxy-0.2.2-py3-none-any.whl (3.3 kB)
Collecting optimizely-sdk==4.1.1
Using cached optimizely_sdk-4.1.1-py3-none-any.whl (108 kB)
Collecting ora2==6.12.0
Using cached ora2-6.12.0-py3-none-any.whl (2.6 MB)
Collecting packaging==24.1
Using cached packaging-24.1-py3-none-any.whl (53 kB)
Collecting pansi==2020.7.3
Using cached pansi-2020.7.3-py2.py3-none-any.whl (10 kB)
Collecting paramiko==3.5.0
Using cached paramiko-3.5.0-py3-none-any.whl (227 kB)
Collecting path==16.11.0
Using cached path-16.11.0-py3-none-any.whl (25 kB)
Collecting path-py==12.5.0
Using cached path.py-12.5.0-py3-none-any.whl (2.3 kB)
Collecting paver==1.3.4
Using cached Paver-1.3.4-py2.py3-none-any.whl (428 kB)
Collecting pbr==6.1.0
Using cached pbr-6.1.0-py2.py3-none-any.whl (108 kB)
Collecting pgpy==0.6.0
Using cached PGPy-0.6.0.tar.gz (603 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting piexif==1.1.3
Using cached piexif-1.1.3-py2.py3-none-any.whl (20 kB)
Collecting pillow==10.4.0
Using cached pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.5 MB)
Collecting platformdirs==4.3.6
Using cached platformdirs-4.3.6-py3-none-any.whl (18 kB)
Collecting polib==1.2.0
Using cached polib-1.2.0-py2.py3-none-any.whl (20 kB)
Collecting prompt-toolkit==3.0.48
Using cached prompt_toolkit-3.0.48-py3-none-any.whl (386 kB)
Collecting propcache==0.2.0
Using cached propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (236 kB)
Collecting proto-plus==1.24.0
Using cached proto_plus-1.24.0-py3-none-any.whl (50 kB)
Collecting protobuf==5.28.2
Using cached protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl (316 kB)
Collecting psutil==6.0.0
Using cached psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290 kB)
Collecting pyasn1==0.6.1
Using cached pyasn1-0.6.1-py3-none-any.whl (83 kB)
Collecting pyasn1-modules==0.4.1
Using cached pyasn1_modules-0.4.1-py3-none-any.whl (181 kB)
Collecting pycountry==24.6.1
Using cached pycountry-24.6.1-py3-none-any.whl (6.3 MB)
Collecting pycparser==2.22
Using cached pycparser-2.22-py3-none-any.whl (117 kB)
Collecting pycryptodomex==3.21.0
Using cached pycryptodomex-3.21.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB)
Collecting pydantic==2.9.2
Using cached pydantic-2.9.2-py3-none-any.whl (434 kB)
Collecting pydantic-core==2.23.4
Using cached pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
Collecting pygments==2.18.0
Using cached pygments-2.18.0-py3-none-any.whl (1.2 MB)
Collecting pyjwkest==1.4.2
Using cached pyjwkest-1.4.2.tar.gz (41 kB)
Collecting pyjwt[crypto]==2.9.0
Using cached PyJWT-2.9.0-py3-none-any.whl (22 kB)
Collecting pylatexenc==2.10
Using cached pylatexenc-2.10.tar.gz (162 kB)
Collecting pylti1p3==2.0.0
Using cached PyLTI1p3-2.0.0-py2.py3-none-any.whl (61 kB)
Collecting pymemcache==4.0.0
Using cached pymemcache-4.0.0-py2.py3-none-any.whl (60 kB)
Collecting pymongo==4.4.0
Using cached pymongo-4.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (652 kB)
Collecting pynacl==1.5.0
Using cached PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)
Collecting pynliner==0.8.0
Using cached pynliner-0.8.0-py2.py3-none-any.whl (8.5 kB)
Collecting pyopenssl==24.2.1
Using cached pyOpenSSL-24.2.1-py3-none-any.whl (58 kB)
Collecting pyparsing==3.1.4
Using cached pyparsing-3.1.4-py3-none-any.whl (104 kB)
Collecting pyrsistent==0.20.0
Using cached pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (120 kB)
Collecting pysrt==1.1.2
Using cached pysrt-1.1.2.tar.gz (104 kB)
Collecting python-dateutil==2.9.0.post0
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Collecting python-ipware==3.0.0
Using cached python_ipware-3.0.0-py3-none-any.whl (10 kB)
Collecting python-memcached==1.62
Using cached python_memcached-1.62-py2.py3-none-any.whl (15 kB)
Collecting python-slugify==8.0.4
Using cached python_slugify-8.0.4-py2.py3-none-any.whl (10 kB)
Collecting python-swiftclient==4.6.0
Using cached python_swiftclient-4.6.0-py3-none-any.whl (88 kB)
Collecting python3-openid==3.2.0
Using cached python3_openid-3.2.0-py3-none-any.whl (133 kB)
Collecting python3-saml==1.16.0
Using cached python3_saml-1.16.0-py3-none-any.whl (76 kB)
Collecting pytz==2024.2
Using cached pytz-2024.2-py2.py3-none-any.whl (508 kB)
Collecting pyuca==1.2
Using cached pyuca-1.2-py2.py3-none-any.whl (1.5 MB)
Collecting pyyaml==6.0.2
Using cached PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)
Collecting random2==1.0.2
Using cached random2-1.0.2-py3-none-any.whl (12 kB)
Collecting recommender-xblock==2.2.1
Using cached recommender_xblock-2.2.1-py3-none-any.whl (61 kB)
Collecting redis==5.1.1
Using cached redis-5.1.1-py3-none-any.whl (261 kB)
Collecting referencing==0.35.1
Using cached referencing-0.35.1-py3-none-any.whl (26 kB)
Collecting regex==2024.9.11
Using cached regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792 kB)
Collecting requests==2.32.3
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Collecting requests-oauthlib==2.0.0
Using cached requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)
Collecting rpds-py==0.20.0
Using cached rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (354 kB)
Collecting rsa==4.9
Using cached rsa-4.9-py3-none-any.whl (34 kB)
Collecting rules==3.5
Using cached rules-3.5-py2.py3-none-any.whl (25 kB)
Collecting s3transfer==0.10.3
Using cached s3transfer-0.10.3-py3-none-any.whl (82 kB)
Collecting sailthru-client==2.2.3
Using cached sailthru-client-2.2.3.tar.gz (10 kB)
Collecting scipy==1.14.1
Using cached scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (41.2 MB)
Collecting semantic-version==2.10.0
Using cached semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)
Collecting shapely==2.0.6
Using cached shapely-2.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB)
Collecting simplejson==3.19.3
Using cached simplejson-3.19.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144 kB)
Collecting six==1.16.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting slumber==0.7.1
Using cached slumber-0.7.1.tar.gz (10 kB)
Collecting snowflake-connector-python==3.12.2
Using cached snowflake_connector_python-3.12.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB)
Collecting social-auth-app-django==5.4.1
Using cached social_auth_app_django-5.4.1-py3-none-any.whl (26 kB)
Collecting social-auth-core==4.5.4
Using cached social_auth_core-4.5.4-py3-none-any.whl (410 kB)
Collecting sorl-thumbnail==12.11.0
Using cached sorl_thumbnail-12.11.0-py3-none-any.whl (42 kB)
Collecting sortedcontainers==2.4.0
Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Collecting soupsieve==2.6
Using cached soupsieve-2.6-py3-none-any.whl (36 kB)
Collecting sqlparse==0.5.1
Using cached sqlparse-0.5.1-py3-none-any.whl (44 kB)
Collecting staff-graded-xblock==2.3.0
Using cached staff_graded_xblock-2.3.0-py3-none-any.whl (20 kB)
Collecting stevedore==5.3.0
Using cached stevedore-5.3.0-py3-none-any.whl (49 kB)
Collecting super-csv==3.2.0
Using cached super_csv-3.2.0-py2.py3-none-any.whl (21 kB)
Collecting sympy==1.13.3
Using cached sympy-1.13.3-py3-none-any.whl (6.2 MB)
Collecting testfixtures==8.3.0
Using cached testfixtures-8.3.0-py3-none-any.whl (105 kB)
Collecting text-unidecode==1.3
Using cached text_unidecode-1.3-py2.py3-none-any.whl (78 kB)
Collecting tinycss2==1.2.1
Using cached tinycss2-1.2.1-py3-none-any.whl (21 kB)
Collecting tomlkit==0.13.2
Using cached tomlkit-0.13.2-py3-none-any.whl (37 kB)
Collecting tqdm==4.66.5
Using cached tqdm-4.66.5-py3-none-any.whl (78 kB)
Collecting typing-extensions==4.12.2
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Collecting tzdata==2024.2
Using cached tzdata-2024.2-py2.py3-none-any.whl (346 kB)
Collecting unicodecsv==0.14.1
Using cached unicodecsv-0.14.1.tar.gz (10 kB)
Collecting uritemplate==4.1.1
Using cached uritemplate-4.1.1-py2.py3-none-any.whl (10 kB)
Collecting urllib3==1.26.20
Using cached urllib3-1.26.20-py2.py3-none-any.whl (144 kB)
Collecting user-util==1.1.0
Using cached user_util-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting vine==5.1.0
Using cached vine-5.1.0-py3-none-any.whl (9.6 kB)
Collecting voluptuous==0.15.2
Using cached voluptuous-0.15.2-py3-none-any.whl (31 kB)
Collecting walrus==0.9.4
Using cached walrus-0.9.4.tar.gz (82 kB)
Collecting watchdog==5.0.3
Using cached watchdog-5.0.3-py3-none-manylinux2014_x86_64.whl (79 kB)
Collecting wcwidth==0.2.13
Using cached wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Collecting web-fragments==2.2.0
Using cached web_fragments-2.2.0-py2.py3-none-any.whl (15 kB)
Collecting webencodings==0.5.1
Using cached webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
Collecting webob==1.8.8
Using cached WebOb-1.8.8-py2.py3-none-any.whl (115 kB)
Collecting wrapt==1.16.0
Using cached wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (80 kB)
Collecting xblock[django]==5.1.0
Using cached XBlock-5.1.0-py3-none-any.whl (140 kB)
Collecting xblock-drag-and-drop-v2==4.0.3
Using cached xblock_drag_and_drop_v2-4.0.3-py3-none-any.whl (222 kB)
Collecting xblock-google-drive==0.7.0
Using cached xblock_google_drive-0.7.0-py2.py3-none-any.whl (29 kB)
Collecting xblock-poll==1.14.0
Using cached xblock_poll-1.14.0-py3-none-any.whl (184 kB)
Collecting xblock-utils==4.0.0
Using cached xblock_utils-4.0.0-py3-none-any.whl (31 kB)
Collecting xmlsec==1.3.14
Using cached xmlsec-1.3.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB)
Collecting xss-utils==0.6.0
Using cached xss_utils-0.6.0-py2.py3-none-any.whl (17 kB)
Collecting yarl==1.14.0
Using cached yarl-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (336 kB)
Collecting zipp==3.20.2
Using cached zipp-3.20.2-py3-none-any.whl (9.2 kB)
Requirement already satisfied: setuptools in /edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages (from edx-api-doc-tools==2.0.0->-r /edx/app/edxapp/edx-platform/requirements/edx/base.txt (line 406)) (50.3.2)
Collecting setuptools
Using cached setuptools-75.1.0-py3-none-any.whl (1.2 MB)
STDERR:
WARNING: lxml 5.3.0 does not provide the extra 'html-clean'
ERROR: Exception:
Traceback (most recent call last):
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 173, in _main
status = self.run(options, args)
^^^^^^^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper
return func(self, options, args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 315, in run
requirement_set = resolver.resolve(
^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 94, in resolve
result = self._result = resolver.resolve(
^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 472, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 366, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 221, in _attempt_to_pin_criterion
satisfied = all(
^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py", line 222, in <genexpr>
self._p.is_satisfied_by(requirement=r, candidate=candidate)
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/provider.py", line 178, in is_satisfied_by
return requirement.is_satisfied_by(candidate)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/edx/app/edxapp/venvs/edxapp/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/requirements.py", line 84, in is_satisfied_by
assert candidate.name == self.name, (
^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Internal issue: Candidate is not for this requirement lxml[html-clean,html-clean] vs lxml[html-clean]
October 11:
2U reaches out to AXIM as the owners of edx-platform to remove the requirement for the static assets check in order to merge the fixes:
When the requirement is removed, however, renovate merged an upgrade to edx-cookie-policy-banner, even though the upgrade broke the static assets check.
A revert to the renovate upgrade was added to the revert PR:
The revert PR was merged, and the static assets requirement was re-instated, this time for ubuntu-22.04.