Consider relicensing to a permissive license (MIT/Apache-2.0) for enterprise adoption
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Inizia dai metadati della licenza in pyproject.toml ed esamina la cronologia dei contributi per determinare chi deve dare il proprio consenso. I maintainer devono scegliere tra MIT e Apache-2.0 e ottenere l’accordo di tutti i contributori prima di modificare la licenza del progetto. Il lavoro è completato quando la licenza scelta è approvata e i metadati del repository la riflettono.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
pytest-rerunfailures is licensed under MPL-2.0 (Mozilla Public License 2.0). While MPL-2.0 is an OSI-approved open source license, its copyleft provisions create adoption barriers in enterprise environments.
From pyproject.toml:
license.text = "MPL-2.0"
Why This Matters
Enterprise organizations running security/license scanners (Snyk, Black Duck, FOSSA, WhiteSource) commonly have policies that flag or block MPL-2.0 dependencies because:
- File-level copyleft: Any modifications to MPL-2.0 licensed files must be released under the same license
- Distribution triggers: Distributing the software (e.g., in Docker images, CI pipelines, packaged test frameworks) can trigger compliance obligations
- Legal review overhead: Each MPL-2.0 dependency typically requires legal review and an exception approval process
In practice, this means teams that want to use pytest-rerunfailures in enterprise CI/CD pipelines either:
- Go through a lengthy legal exception process
- Build custom retry plugins from scratch to avoid the dependency
We chose the latter — building a ~190-line custom retry plugin that reimplements the core functionality (--reruns, --reruns-delay, per-test @pytest.mark.flaky) using pytest_runtest_protocol and
runtestprotocol. It works, but it's duplicated effort that wouldn't be necessary under a permissive license.
Context: The pytest Ecosystem is Permissive
Most of the pytest plugin ecosystem uses permissive licenses:
┌──────────────────────┬──────────────────────┐
│ Package │ License │
├──────────────────────┼──────────────────────┤
│ pytest │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-xdist │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-html │ MPL-2.0 (same issue) │
├──────────────────────┼──────────────────────┤
│ pytest-playwright │ Apache-2.0 │
├──────────────────────┼──────────────────────┤
│ pytest-asyncio │ Apache-2.0 │
├──────────────────────┼──────────────────────┤
│ pytest-cov │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-mock │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-timeout │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-rerunfailures │ MPL-2.0 │
└──────────────────────┴──────────────────────┘
pytest-rerunfailures is one of the few popular pytest plugins that uses a copyleft license. This creates friction for teams that can freely use the rest of the ecosystem.
Suggestion
Consider relicensing to MIT or Apache-2.0 to align with the broader pytest ecosystem and remove enterprise adoption barriers.
This package has no transitive dependencies beyond packaging and pytest itself (both permissive). A license change would have no upstream implications.
I understand relicensing requires consent from all contributors, and this may not be a simple change. But given the package's role as essential testing infrastructure, a permissive license would
significantly broaden adoption in enterprise environments where license compliance is non-negotiable.
Our Workaround
For reference, we built a custom replacement (~190 lines) that provides:
- --retries N CLI flag (equivalent to --reruns)
- --retry-delay CLI flag (equivalent to --reruns-delay)
- @pytest.mark.retry(count=N) marker (equivalent to @pytest.mark.flaky)
- Full protocol re-run (setup + call + teardown) so Playwright fixtures get fresh browser contexts
This works but represents duplicated community effort.
Environment
- pytest-rerunfailures 16.1
- Python 3.13
- Snyk enterprise license policy (blocks MPL-2.0)
- Lingua principale
- Python
- Stelle
- 480
- Fork
- 110
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
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 pytest-dev/pytest-rerunfailures
-
Zero rerun delay can abort with OverflowError for a large finite backoff factorForse già presa @AryanRG l’ha presa 11 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Non-finite rerun delay settings abort pytest with INTERNALERRORForse già presa @Arham-Begani l’ha presa 9 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
-
fail-on-flaky returns success after a rerun with xdistForse già presa @harbinresearcher l’ha presa 12 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 15/100
-
Add ability to raise runtime warnings on rerunsForse già presa @LouisDeconinck l’ha presa 40 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
pytest-dev/pytest-rerunfailures#318 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
pytest-dev/pytest-rerunfailures#313 · 5 commenti ·
Tutte le issue di pytest-dev/pytest-rerunfailures
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
521xueweihan/HelloGitHub#4150 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
aws-samples/sample-per-model-bedrock#595 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
bug connectors
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 67/100
pyinfra-dev/pyinfra#2036 ·
I maintainer di solito rispondono entro 9 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno