diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e29a1e6e06..f3bea11810 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,17 +25,6 @@ jobs: ports: - 6379:6379 - elastic: - image: docker.elastic.co/elasticsearch/elasticsearch:9.2.3 - env: - network.host: "0.0.0.0" - http.cors.enabled: "true" - http.cors.allow-origin: "*" - rest.action.multi.allow_explicit_index: "false" - ES_JAVA_OPTS: -Xms512m -Xmx512m" - ports: - - 9200:9200 - steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 @@ -73,19 +62,6 @@ jobs: - name: Install project run: poetry install --no-interaction - # Configurations required for elasticsearch. - - name: Configure sysctl limits - run: | - sudo swapoff -a - sudo sysctl -w vm.swappiness=1 - sudo sysctl -w fs.file-max=262144 - sudo sysctl -w vm.max_map_count=262144 - - - name: Runs Elasticsearch - uses: elastic/elastic-github-actions/elasticsearch@master - with: - stack-version: 6.7.1 - - name: Running Celery run: | celery -A mitxpro worker -B -l INFO & @@ -116,7 +92,6 @@ jobs: CELERY_RESULT_BACKEND: redis://localhost:6379/4 DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres # pragma: allowlist secret WEBPACK_DISABLE_LOADER_STATS: "True" - ELASTICSEARCH_URL: localhost:9200 EXTERNAL_COURSE_SYNC_API_KEY: fake_external_course_sync_api_key # pragma: allowlist secret MAILGUN_KEY: fake_mailgun_key MAILGUN_SENDER_DOMAIN: other.fake.site diff --git a/RELEASE.rst b/RELEASE.rst index 3f0279fc8f..4b0dde6d40 100644 --- a/RELEASE.rst +++ b/RELEASE.rst @@ -1,6 +1,15 @@ Release Notes ============= +Version 0.190.1 +--------------- + +- chore: remove unused Elastic search from CI (#3755) +- fix(deps): update dependency chai to v6 (#3754) +- fix(deps): update dependency dj-database-url to v3.1.0 (#3753) +- fix(deps): update dependency boto3 to v1.42.26 (#3752) +- fix(deps): update dependency celery to v5.6.2 (#3748) + Version 0.190.0 (Released January 15, 2026) --------------- diff --git a/docker-compose-notebook.yml b/docker-compose-notebook.yml index f30d0de295..9fcf9ecbfc 100644 --- a/docker-compose-notebook.yml +++ b/docker-compose-notebook.yml @@ -9,7 +9,6 @@ x-environment: &py-environment MITXPRO_BASE_URL: ${MITXPRO_BASE_URL:-http://xpro.odl.local:8053} MITXPRO_SECURE_SSL_REDIRECT: "False" MITXPRO_DB_DISABLE_SSL: "True" - ELASTICSEARCH_URL: elastic:9200 CELERY_TASK_ALWAYS_EAGER: "False" REDIS_URL: redis://redis:6379/4 DOCKER_HOST: ${DOCKER_HOST:-missing} diff --git a/docker-compose.yml b/docker-compose.yml index 52a0ad7cff..55125cd647 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,6 @@ x-environment: &py-environment MITXPRO_DB_DISABLE_SSL: "True" MITXPRO_ADMIN_EMAIL: admin@localhost MITOL_DIGITAL_CREDENTIALS_AUTH_TYPE: xpro - ELASTICSEARCH_URL: elastic:9200 CELERY_TASK_ALWAYS_EAGER: "False" REDIS_URL: redis://redis:6379/4 DOCKER_HOST: ${DOCKER_HOST:-missing} diff --git a/mitxpro/settings.py b/mitxpro/settings.py index 6507fb75b2..d8f2b16cfc 100644 --- a/mitxpro/settings.py +++ b/mitxpro/settings.py @@ -26,7 +26,7 @@ from mitxpro.celery_utils import OffsettingSchedule from mitxpro.sentry import init_sentry -VERSION = "0.190.0" +VERSION = "0.190.1" env.reset() diff --git a/package.json b/package.json index 05cecbd25e..fed9289364 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "babel-loader": "^10.0.0", "bootstrap": "^4.4.1", "casual-browserify": "^1.5.19-2", - "chai": "^5.0.0", + "chai": "^6.0.0", "chai-as-promised": "^8.0.0", "codecov": "^3.7.1", "css-loader": "^7.0.0", diff --git a/poetry.lock b/poetry.lock index a16e533c75..3c967c98ce 100644 --- a/poetry.lock +++ b/poetry.lock @@ -203,18 +203,18 @@ files = [ [[package]] name = "boto3" -version = "1.42.25" +version = "1.42.26" description = "The AWS SDK for Python" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "boto3-1.42.25-py3-none-any.whl", hash = "sha256:8128bde4f9d5ffce129c76d1a2efe220e3af967a2ad30bc305ba088bbc96343d"}, - {file = "boto3-1.42.25.tar.gz", hash = "sha256:ccb5e757dd62698d25766cc54cf5c47bea43287efa59c93cf1df8c8fbc26eeda"}, + {file = "boto3-1.42.26-py3-none-any.whl", hash = "sha256:f116cfbe7408e0a9153da363f134d2f1b5008f17ee86af104f0ce59a62be1833"}, + {file = "boto3-1.42.26.tar.gz", hash = "sha256:0fbcf1922e62d180f3644bc1139425821b38d93c1e6ec27409325d2ae86131aa"}, ] [package.dependencies] -botocore = ">=1.42.25,<1.43.0" +botocore = ">=1.42.26,<1.43.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.16.0,<0.17.0" @@ -223,14 +223,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.42.25" +version = "1.42.26" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "botocore-1.42.25-py3-none-any.whl", hash = "sha256:470261966aab1d09a1cd4ba56810098834443602846559ba9504f6613dfa52dc"}, - {file = "botocore-1.42.25.tar.gz", hash = "sha256:7ae79d1f77d3771e83e4dd46bce43166a1ba85d58a49cffe4c4a721418616054"}, + {file = "botocore-1.42.26-py3-none-any.whl", hash = "sha256:71171c2d09ac07739f4efce398b15a4a8bc8769c17fb3bc99625e43ed11ad8b7"}, + {file = "botocore-1.42.26.tar.gz", hash = "sha256:1c8855e3e811f015d930ccfe8751d4be295aae0562133d14b6f0b247cd6fd8d3"}, ] [package.dependencies] @@ -281,14 +281,14 @@ files = [ [[package]] name = "celery" -version = "5.5.3" +version = "5.6.2" description = "Distributed Task Queue." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "celery-5.5.3-py3-none-any.whl", hash = "sha256:0b5761a07057acee94694464ca482416b959568904c9dfa41ce8413a7d65d525"}, - {file = "celery-5.5.3.tar.gz", hash = "sha256:6c972ae7968c2b5281227f01c3a3f984037d21c5129d07bf3550cc2afc6b10a5"}, + {file = "celery-5.6.2-py3-none-any.whl", hash = "sha256:3ffafacbe056951b629c7abcf9064c4a2366de0bdfc9fdba421b97ebb68619a5"}, + {file = "celery-5.6.2.tar.gz", hash = "sha256:4a8921c3fcf2ad76317d3b29020772103581ed2454c4c042cc55dcc43585009b"}, ] [package.dependencies] @@ -297,13 +297,14 @@ click = ">=8.1.2,<9.0" click-didyoumean = ">=0.3.0" click-plugins = ">=1.1.1" click-repl = ">=0.2.0" -kombu = ">=5.5.2,<5.6" +kombu = ">=5.6.0" python-dateutil = ">=2.8.2" +tzlocal = "*" vine = ">=5.1.0,<6.0" [package.extras] arangodb = ["pyArango (>=2.0.2)"] -auth = ["cryptography (==44.0.2)"] +auth = ["cryptography (==46.0.3)"] azureblockblob = ["azure-identity (>=1.19.0)", "azure-storage-blob (>=12.15.0)"] brotli = ["brotli (>=1.0.0) ; platform_python_implementation == \"CPython\"", "brotlipy (>=0.7.0) ; platform_python_implementation == \"PyPy\""] cassandra = ["cassandra-driver (>=3.25.0,<4)"] @@ -313,15 +314,15 @@ couchbase = ["couchbase (>=3.0.0) ; platform_python_implementation != \"PyPy\" a couchdb = ["pycouchdb (==1.16.0)"] django = ["Django (>=2.2.28)"] dynamodb = ["boto3 (>=1.26.143)"] -elasticsearch = ["elastic-transport (<=8.17.1)", "elasticsearch (<=8.17.2)"] +elasticsearch = ["elastic-transport (<=9.1.0)", "elasticsearch (<=9.1.2)"] eventlet = ["eventlet (>=0.32.0) ; python_version < \"3.10\""] -gcs = ["google-cloud-firestore (==2.20.1)", "google-cloud-storage (>=2.10.0)", "grpcio (==1.67.0)"] +gcs = ["google-cloud-firestore (==2.22.0)", "google-cloud-storage (>=2.10.0)", "grpcio (==1.75.1)"] gevent = ["gevent (>=1.5.0)"] librabbitmq = ["librabbitmq (>=2.0.0) ; python_version < \"3.11\""] memcache = ["pylibmc (==1.6.3) ; platform_system != \"Windows\""] mongodb = ["kombu[mongodb]"] msgpack = ["kombu[msgpack]"] -pydantic = ["pydantic (>=2.4)"] +pydantic = ["pydantic (>=2.12.0a1) ; python_version >= \"3.14\"", "pydantic (>=2.4) ; python_version < \"3.14\""] pymemcache = ["python-memcached (>=1.61)"] pyro = ["pyro4 (==4.82) ; python_version < \"3.11\""] pytest = ["pytest-celery[all] (>=1.2.0,<1.3.0)"] @@ -330,8 +331,8 @@ s3 = ["boto3 (>=1.26.143)"] slmq = ["softlayer_messaging (>=1.0.3)"] solar = ["ephem (==4.2) ; platform_python_implementation != \"PyPy\""] sqlalchemy = ["kombu[sqlalchemy]"] -sqs = ["boto3 (>=1.26.143)", "kombu[sqs] (>=5.5.0)", "urllib3 (>=1.26.16)"] -tblib = ["tblib (>=1.3.0) ; python_version < \"3.8.0\"", "tblib (>=1.5.0) ; python_version >= \"3.8.0\""] +sqs = ["boto3 (>=1.26.143)", "kombu[sqs] (>=5.5.0)", "pycurl (>=7.43.0.5,<7.45.4) ; sys_platform != \"win32\" and platform_python_implementation == \"CPython\" and python_version < \"3.9\"", "pycurl (>=7.45.4) ; sys_platform != \"win32\" and platform_python_implementation == \"CPython\" and python_version >= \"3.9\"", "urllib3 (>=1.26.16)"] +tblib = ["tblib (==3.2.2)"] yaml = ["kombu[yaml]"] zookeeper = ["kazoo (>=1.3.1)"] zstd = ["zstandard (==0.23.0)"] @@ -992,18 +993,18 @@ files = [ [[package]] name = "dj-database-url" -version = "3.0.1" +version = "3.1.0" description = "Use Database URLs in your Django Application." optional = false -python-versions = "*" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "dj_database_url-3.0.1-py3-none-any.whl", hash = "sha256:43950018e1eeea486bf11136384aec0fe55b29fe6fd8a44553231b85661d9383"}, - {file = "dj_database_url-3.0.1.tar.gz", hash = "sha256:8994961efb888fc6bf8c41550870c91f6f7691ca751888ebaa71442b7f84eff8"}, + {file = "dj_database_url-3.1.0-py3-none-any.whl", hash = "sha256:155a56fbbecbaaf1348ccd73bf29138b4c9988363ba08261a0f0145e392e638c"}, + {file = "dj_database_url-3.1.0.tar.gz", hash = "sha256:d80218426b83f9302c8d27d4fccf52de5cf0cab179f0645fb2839f37605d1353"}, ] [package.dependencies] -Django = ">=4.2" +django = ">=4.2" [[package]] name = "django" @@ -2167,20 +2168,20 @@ typing-extensions = ">=4.5.0" [[package]] name = "kombu" -version = "5.5.4" +version = "5.6.2" description = "Messaging library for Python." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "kombu-5.5.4-py3-none-any.whl", hash = "sha256:a12ed0557c238897d8e518f1d1fdf84bd1516c5e305af2dacd85c2015115feb8"}, - {file = "kombu-5.5.4.tar.gz", hash = "sha256:886600168275ebeada93b888e831352fe578168342f0d1d5833d88ba0d847363"}, + {file = "kombu-5.6.2-py3-none-any.whl", hash = "sha256:efcfc559da324d41d61ca311b0c64965ea35b4c55cc04ee36e55386145dace93"}, + {file = "kombu-5.6.2.tar.gz", hash = "sha256:8060497058066c6f5aed7c26d7cd0d3b574990b09de842a8c5aaed0b92cc5a55"}, ] [package.dependencies] amqp = ">=5.1.1,<6.0.0" packaging = "*" -tzdata = {version = ">=2025.2", markers = "python_version >= \"3.9\""} +tzdata = ">=2025.2" vine = "5.1.0" [package.extras] @@ -2188,16 +2189,16 @@ azureservicebus = ["azure-servicebus (>=7.10.0)"] azurestoragequeues = ["azure-identity (>=1.12.0)", "azure-storage-queue (>=12.6.0)"] confluentkafka = ["confluent-kafka (>=2.2.0)"] consul = ["python-consul2 (==0.1.5)"] -gcpubsub = ["google-cloud-monitoring (>=2.16.0)", "google-cloud-pubsub (>=2.18.4)", "grpcio (==1.67.0)", "protobuf (==4.25.5)"] +gcpubsub = ["google-cloud-monitoring (>=2.16.0)", "google-cloud-pubsub (>=2.18.4)", "grpcio (==1.75.1)", "protobuf (==6.32.1)"] librabbitmq = ["librabbitmq (>=2.0.0) ; python_version < \"3.11\""] -mongodb = ["pymongo (==4.10.1)"] -msgpack = ["msgpack (==1.1.0)"] +mongodb = ["pymongo (==4.15.3)"] +msgpack = ["msgpack (==1.1.2)"] pyro = ["pyro4 (==4.82)"] -qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] -redis = ["redis (>=4.5.2,!=4.5.5,!=5.0.2,<=5.2.1)"] +qpid = ["qpid-python (==1.36.0-1)", "qpid-tools (==1.36.0-1)"] +redis = ["redis (>=4.5.2,!=4.5.5,!=5.0.2,<6.5)"] slmq = ["softlayer_messaging (>=1.0.3)"] sqlalchemy = ["sqlalchemy (>=1.4.48,<2.1)"] -sqs = ["boto3 (>=1.26.143)", "urllib3 (>=1.26.16)"] +sqs = ["boto3 (>=1.26.143)", "pycurl (>=7.43.0.5) ; sys_platform != \"win32\" and platform_python_implementation == \"CPython\"", "urllib3 (>=1.26.16)"] yaml = ["PyYAML (>=3.10)"] zookeeper = ["kazoo (>=2.8.0)"] @@ -4669,6 +4670,24 @@ files = [ {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +description = "tzinfo object for the local timezone" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d"}, + {file = "tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd"}, +] + +[package.dependencies] +tzdata = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] + [[package]] name = "ua-parser" version = "1.0.1" @@ -4957,4 +4976,4 @@ xmlsec = ["xmlsec (>=0.6.1)"] [metadata] lock-version = "2.1" python-versions = "^3.13" -content-hash = "fa9d60ddd914c0047c572f7d4ff0bd5cda15761ca17be813bb88ebb421146b96" +content-hash = "110210c36fc841438e521ad4044a9af53d960707ebf509a08161c6832c5214aa" diff --git a/pyproject.toml b/pyproject.toml index 51c6f4c6f5..1e6f280ddf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,10 +15,10 @@ python = "^3.13" Pillow = "10.4.0" PyNaCl = "1.6.2" beautifulsoup4 = "4.8.2" -boto3 = "1.42.25" -celery = "5.5.3" +boto3 = "1.42.26" +celery = "5.6.2" celery-redbeat = "2.3.3" -dj-database-url = "3.0.1" +dj-database-url = "3.1.0" django = "4.2.27" django-anymail = { version = "13.1", extras = ["mailgun"] } django-filter = "^23.4" diff --git a/yarn.lock b/yarn.lock index 8c9a9548a8..d18d83f655 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3351,13 +3351,6 @@ __metadata: languageName: node linkType: hard -"assertion-error@npm:^2.0.1": - version: 2.0.1 - resolution: "assertion-error@npm:2.0.1" - checksum: a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 - languageName: node - linkType: hard - "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -3843,16 +3836,10 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.0.0": - version: 5.3.3 - resolution: "chai@npm:5.3.3" - dependencies: - assertion-error: ^2.0.1 - check-error: ^2.1.1 - deep-eql: ^5.0.1 - loupe: ^3.1.0 - pathval: ^2.0.0 - checksum: bc4091f1cccfee63f6a3d02ce477fe847f5c57e747916a11bd72675c9459125084e2e55dc2363ee2b82b088a878039ee7ee27c75d6d90f7de9202bf1b12ce573 +"chai@npm:^6.0.0": + version: 6.2.2 + resolution: "chai@npm:6.2.2" + checksum: c8c94857745b673dae22a7b25053a41a931848e2c20d1acb6838cf99b7d57b0e66b9eb878c6308534b2965c11ae1a66f8c58066f368c91a07797bb8ee881a733 languageName: node linkType: hard @@ -4629,13 +4616,6 @@ __metadata: languageName: node linkType: hard -"deep-eql@npm:^5.0.1": - version: 5.0.2 - resolution: "deep-eql@npm:5.0.2" - checksum: 6aaaadb4c19cbce42e26b2bbe5bd92875f599d2602635dc97f0294bae48da79e89470aedee05f449e0ca8c65e9fd7e7872624d1933a1db02713d99c2ca8d1f24 - languageName: node - linkType: hard - "deep-equal@npm:^1.1.1": version: 1.1.2 resolution: "deep-equal@npm:1.1.2" @@ -8418,13 +8398,6 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0": - version: 3.2.1 - resolution: "loupe@npm:3.2.1" - checksum: 3ce9ecc5b2c56ffc073bf065ad3a4644cccce3eac81e61a8732e9c8ebfe05513ed478592d25f9dba24cfe82766913be045ab384c04711c7c6447deaf800ad94c - languageName: node - linkType: hard - "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" @@ -8910,7 +8883,7 @@ __metadata: babel-loader: ^10.0.0 bootstrap: ^4.4.1 casual-browserify: ^1.5.19-2 - chai: ^5.0.0 + chai: ^6.0.0 chai-as-promised: ^8.0.0 codecov: ^3.7.1 css-loader: ^7.0.0 @@ -9750,13 +9723,6 @@ __metadata: languageName: node linkType: hard -"pathval@npm:^2.0.0": - version: 2.0.1 - resolution: "pathval@npm:2.0.1" - checksum: 280e71cfd86bb5d7ff371fe2752997e5fa82901fcb209abf19d4457b7814f1b4a17845dfb17bd28a596ccdb0ecea178720ce23dacfa9c841f37804b700647810 - languageName: node - linkType: hard - "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0"