Noyau métier pur et typé du projet Riftbound : cartes, decks, formats et validation statique de deck.
Project description
riftbound-core
Noyau métier pur et typé pour le jeu de cartes Riftbound : modèles de cartes et de decks, formats, règles de construction statiques, sérialisation et analyse simple — sans réseau, sans base de données et sans dépendance runtime externe.
Statut : release 0.1.1 (beta) — périmètre V1 livré (validation statique,
sérialisation, primitives descriptives de jeu).
Installation
Python >=3.11 requis.
python -m pip install riftbound-core
Pour contribuer au dépôt :
git clone https://github.com/baobabgit/riftbound-core.git
cd riftbound-core
python -m pip install -e ".[dev]"
Périmètre
Inclus dans ce package :
- modèles
Card,Deck, formats et banlist ; - validation statique de deck (
DeckValidator, codes d'erreur stables) ; - sérialisation JSON et decklist texte (
riftbound-decklist/1) ; - analyse simple (courbe de coût, distributions) ;
- factories de test (
riftbound_core.testing).
Hors périmètre (packages futurs de l'écosystème) :
- moteur de règles complet et résolution d'effets ;
- API HTTP, persistance, interface graphique ;
- IA de deckbuilding et simulation de parties.
Démarrage rapide
L'API racine expose uniquement __version__. Les symboles métier s'importent
depuis leurs sous-modules.
import riftbound_core
from riftbound_core.cards.domain import Domain
from riftbound_core.testing.deck_factory import DeckFactory
from riftbound_core.validation.deck_validator import DeckValidator
print(riftbound_core.__version__)
print(Domain.FURY.french_label) # Fureur
deck = DeckFactory.duel_legal()
result = DeckValidator().validate(deck)
if not result.is_valid:
for issue in result.issues:
print(issue.code, issue.message)
Exemples supplémentaires (cartes, formats, sérialisation) : voir la documentation développeur.
Documentation
Guides embarqués après installation PyPI :
from riftbound_core.docs import DECK_VALIDATION_DOC, read_doc
print(read_doc(DECK_VALIDATION_DOC))
| Ressource | Emplacement |
|---|---|
| Validation de deck | src/riftbound_core/docs/deck_validation.md |
| Correspondance règles / codes | src/riftbound_core/docs/rules_mapping.md |
| Changelog | CHANGELOG.md |
| Cahier des charges V1 | docs/riftbound-core/ |
Sur PyPI, les mêmes guides sont disponibles via riftbound_core.docs (voir ci-dessus).
Les sources complètes du dépôt (backlogs, runs IA) restent sur GitHub.
Principes
- Pur : aucun I/O réseau, aucune persistance, aucune IA embarquée.
- Typé :
mypystrict, marqueur PEP 561py.typed. - Testé : couverture ≥ 90 %, CI sur chaque PR et release.
- Déterministe : résultats stables pour un même entrée métier.
Contrôles qualité (développement)
pytest
coverage run -m pytest
coverage report
black --check src tests scripts/ia_workflow
flake8 src tests scripts/ia_workflow
pylint src/riftbound_core scripts/ia_workflow
mypy src/riftbound_core scripts/ia_workflow
python -m bandit -r src/riftbound_core scripts/ia_workflow
Publication PyPI
La release est automatisée par .github/workflows/release.yml
(Trusted Publishing OIDC, attestations Sigstore, GitHub Release).
Procédure maintainer :
- Mettre à jour
__version__danssrc/riftbound_core/__init__.pyetCHANGELOG.md. - Committer sur
main. - Créer et pousser un tag SemVer :
git tag vX.Y.Z && git push origin vX.Y.Z. - Vérifier le workflow Release (qualité → tests → build → PyPI → GitHub Release).
Prérequis PyPI (une fois) : pending publisher ou trusted publisher sur le projet
riftbound-core, workflow release.yml, environnement GitHub pypi.
Licence
MIT — voir LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file riftbound_core-0.1.1.tar.gz.
File metadata
- Download URL: riftbound_core-0.1.1.tar.gz
- Upload date:
- Size: 48.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24d3b728b6177da9b72f005b839b6f20b78426ff1aec9e864fdbd368701dd80c
|
|
| MD5 |
58fe9b02c95bafb1e8e9b32b402c5ae5
|
|
| BLAKE2b-256 |
251843a7723ae388667468a7b6523d8d8f4734b6c2963c68958c6916ab20d53c
|
Provenance
The following attestation bundles were made for riftbound_core-0.1.1.tar.gz:
Publisher:
release.yml on baobabgit/riftbound-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
riftbound_core-0.1.1.tar.gz -
Subject digest:
24d3b728b6177da9b72f005b839b6f20b78426ff1aec9e864fdbd368701dd80c - Sigstore transparency entry: 1820037284
- Sigstore integration time:
-
Permalink:
baobabgit/riftbound-core@877b755c0dfe86a0acd4b09e0f051c3d0293297a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/baobabgit
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@877b755c0dfe86a0acd4b09e0f051c3d0293297a -
Trigger Event:
push
-
Statement type:
File details
Details for the file riftbound_core-0.1.1-py3-none-any.whl.
File metadata
- Download URL: riftbound_core-0.1.1-py3-none-any.whl
- Upload date:
- Size: 80.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4328fadb3cd4e058cd3895d2d6dd579715d691f2c7a845e0e4a43af57f5d6ee
|
|
| MD5 |
7cc153f1bd1bf1d88c3f662bbe935abd
|
|
| BLAKE2b-256 |
48030bb1ecb1699f3440bc9afba2b338b7cf8a9253a98da5c722ed14ed75dde8
|
Provenance
The following attestation bundles were made for riftbound_core-0.1.1-py3-none-any.whl:
Publisher:
release.yml on baobabgit/riftbound-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
riftbound_core-0.1.1-py3-none-any.whl -
Subject digest:
a4328fadb3cd4e058cd3895d2d6dd579715d691f2c7a845e0e4a43af57f5d6ee - Sigstore transparency entry: 1820037300
- Sigstore integration time:
-
Permalink:
baobabgit/riftbound-core@877b755c0dfe86a0acd4b09e0f051c3d0293297a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/baobabgit
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@877b755c0dfe86a0acd4b09e0f051c3d0293297a -
Trigger Event:
push
-
Statement type: