Lint against imports of openedx_catalog internals in openedx-core
I maintainer di solito rispondono entro 1 giorno
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Description
Add an import-linter contract to openedx-core that only lets other apps import openedx_catalog's public modules (api, models_api, data, tests), matching the rule openedx-platform already enforces. That way an import of openedx_catalog's internals fails CI in openedx-core instead of surfacing later, when openedx-platform installs a new openedx-core release.
Context
- openedx/openedx-core#853 fixed an import of
openedx_catalog.modelsin CBE code. openedx-platform's import linter caught it during openedx/openedx-platform#39199, the PR bumping openedx-core's version there; openedx-core's own linter had no rule against it. - @ormsbee asked for this contract in his review of #853 and agreed it should be a separate follow-up PR so the version bump wasn't held up.
- Only
openedx_catalogis in scope. Other apps, such asopenedx_tagging, have nomodels_api.pyyet, so adding them would need a separate design decision.
Acceptance Criteria
-
.importlinterhas a contract that treatsopenedx_catalogas an isolated app: code outsideopenedx_catalogmay import only itsapi,models_api,data, andtestsmodules. -
lint-importspasses onmainwith the new contract. Today the only import ofopenedx_catalogfrom another app isfrom openedx_catalog.models_api import CourseRunincriteria.py, which is allowed. - The PR description shows that the contract catches a real violation: temporarily changing that
criteria.pyline back tofrom openedx_catalog.models import CourseRunmakeslint-importsfail and name that line. -
openedx_taggingand the other apps are not added to the contract.
Technical Details
This is a suggested approach, not the source of truth. The User Story, Description, and Acceptance Criteria define what must be true when the work is done.
Approach
- Copy openedx-platform's
IsolatedAppsContract(openedx/testing/importlinter/isolated_apps_contract.py, about 60 lines) into openedx-core. It has to be a copy because openedx-core must never import from openedx-platform. Put it in the root-leveltest_utilspackage (for exampletest_utils/importlinter.py) rather than undersrc/, so the published package doesn't ship lint tooling. - Register it in
.importlinterwithcontract_types = isolated_apps: test_utils.importlinter.IsolatedAppsContractin the[importlinter]section, then add a contract withisolated_apps = openedx_catalogandallowed_modules = api, models_api, data, tests, matching openedx-platform's contract so the two repos enforce the same rule. - Add a short comment above the new contract explaining why it exists: openedx-platform enforces the same rule, so a violation here would otherwise only surface when openedx-platform installs a new openedx-core release.
lint-imports already runs in CI through tox -e quality, so no workflow change is needed.
Additional context
- openedx-platform's contract definition: the
isolated_appsblock in openedx-platform'spyproject.toml.
- Lingua principale
- Python
- Stelle
- 10
- Fork
- 33
- Merge medio
- 2g 23h
- PR unite (30g)
- 22
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openedx/openedx-core
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
openedx/openedx-core#831 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
openedx/openedx-core#827 ·
I maintainer di solito rispondono entro 1 giorno
-
Implement devstack-only support for viewing Assets in the content libraries UI [Optional] [FC-0138]Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
openedx/openedx-core#891 ·
I maintainer di solito rispondono entro 1 giorno
-
Implement shared assets in openedx_content [FC-0138]Forse già presa @bradenmacdonald l’ha presa 1 giorno fa. Aperta
openedx/openedx-core#890 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Competency Management page: the course panel doesn't match the competency tree's height and grows with its contentForse già presa @AShatsila l’ha presa 5 giorni fa. Aperta
openedx/openedx-core#873 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openedx/openedx-core
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ansys/pyansys-common-mcp#213 ·
I maintainer di solito rispondono entro 3 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
freedomofpress/dangerzone#1594 ·
I maintainer di solito rispondono entro 3 giorni
-
priority:P1 status:in-review type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
randomparity/kdive#3317 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area:ci
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
mesonbuild/meson#16281 ·
I maintainer di solito rispondono entro 1 giorno