Table des matières
marketwatch : Un client pour un jeu boursier virtuel
marketwatch est un client Python archivé pour le jeu boursier virtuel de MarketWatch. Il regroupe connexion, lecture du jeu et ordres simulés. Ces opérations concernent le jeu, sans connexion à un compte de courtage.
- Langages
- 4Répartition du code
- Composants documentés
- 2Explorer les modules
- Documents source
- 3Lire les instructions
Langages du dépôtPython 77.68%4
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 103 813 | |
| Jupyter Notebook | 17 674 | |
| Jinja | 10 228 | |
| Dockerfile | 1 934 |
1. Aperçu
1.1. Pourquoi il existe
Client Python robuste pour interagir avec le jeu boursier virtuel de MarketWatch.
1.2. Cas d’usage
Développement de bots de trading automatisés et analyse de portefeuilles.
2. Cas d’utilisation
Client Python pour le jeu boursier MarketWatch : cours, ordres, portefeuilles et listes (connexion bloquée par un captcha).
- Obtenir le cours d’une action
- JoueurSite MarketWatch
MarketWatch.get_price (marketwatch/__init__.py) charge la page de l’action avec httpx et lit le cours avec BeautifulSoup ; le README l’indique fonctionnel avec skip_login=True.
- Acheter, vendre ou couvrir
- JoueurSite MarketWatch
buy, sell, short et cover construisent un ordre et l’envoient à une partie ; MarketWatchGame (marketwatch/game.py) lie ces appels à un identifiant de partie.
- Lire portefeuille et ordres
- JoueurSite MarketWatch
get_portfolio, get_positions, get_pending_orders, get_leaderboard et get_game_settings lisent les pages de la partie ; cancel_order et cancel_all_orders annulent les ordres en attente.
- Gérer les listes de suivi
- JoueurSite MarketWatch
create_watchlist, add_to_watchlist, get_watchlists, delete_watchlist et delete_watchlist_item appellent les points d’accès des listes de suivi.
- Servir des cartes HTML
- JoueurSite MarketWatch
api/app.py est une application FastAPI avec authentification HTTP Basic qui rend des gabarits Jinja2 pour /game, /portfolio, /leaderboard, /card et /watchlist.
- Trader sur croisement EMA
- GitHub ActionsSite MarketWatch
.github/workflows/ema-workflow.yml s’exécute toutes les cinq minutes, lit les cours avec yfinance, calcule les EMA 20 et 80 et achète ou vend 100 actions à chaque croisement.
2.1. Scénario : Consulter un cours puis passer un ordre
- Installer le paquet avec pip install marketwatch.
- Créer MarketWatch(email, password, skip_login=True) puis appeler get_price("AAPL").
- Pour les appels de partie, se connecter avec de vrais identifiants ; le README prévient que le captcha bloque cette étape.
- Une fois connecté, appeler get_games(), puis buy(game_id, "AAPL", 100).
- Vérifier le résultat avec get_positions(game_id) et get_pending_orders(game_id).
Fichiers consultésREADME.mdmarketwatch/__init__.pymarketwatch/game.pyapi/app.pyapi/setup.md.github/workflows/ema-workflow.ymlnotebook/ema.ipynb
3. Essayer
Adresse publiée dans le README du dépôt. La page s’ouvre dans un cadre isolé, seulement quand vous le demandez.
https://antoinebou12.github.io/marketwatch/4. Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
pip install marketwatchpip install git+https://github.com/antoinebou12/marketwatch.gitgit clone https://github.com/antoinebou12/marketwatch.git5. Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Configuration et utilisation
5.1. Usage
README.md
5.2. Usage (getting-started.md)
docs/getting-started.md
Développement et contributions
5.3. Contributing
README.md
Documentation source
3 documents lus parmi 3 candidats.
6. Fonctions et composants 2
- Session et périmètre du jeu
- MarketWatchGame hérite de MarketWatch et conserve l’identifiant du jeu. buy et sell délèguent au client de base avec cet identifiant. Les opérations de registre et de portefeuille sont liées au jeu.
- Dépendance distante
- Le client dépend de l’authentification et des réponses du site. La présence d’une méthode Python ne signifie pas que l’opération distante reste accessible. Un échec de connexion peut bloquer les méthodes sans changement local.
7. Architecture
Ouvrez un composant pour suivre ses connexions, ou explorez le diagramme complet.
Appelant Python
Enveloppe MarketWatchGame
- Depuis Appelant Python
- Vers Client HTTP de base
Client HTTP de base
- Depuis Enveloppe MarketWatchGame
- Vers Service de jeu virtuel
- Depuis Service de jeu virtuel
Service de jeu virtuel
- Depuis Client HTTP de base
- Vers Client HTTP de base
Mermaid Diagramme interactif
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
n0["Appelant Python"]
n1["Enveloppe MarketWatchGame"]
n2["Client HTTP de base"]
n3["Service de jeu virtuel"]
n0 --> n1
n1 --> n2
n2 --> n3
n3 --> n2
Version texte du diagramme
- Appelant Python → Enveloppe MarketWatchGame
- Enveloppe MarketWatchGame → Client HTTP de base
- Client HTTP de base → Service de jeu virtuel
- Service de jeu virtuel → Client HTTP de base
Suivre un parcours dans le code
Suivez buy depuis l’enveloppe jusqu’au client de base. L’enveloppe ajoute l’identifiant; la session et la requête HTTP se trouvent plus bas.
8. Dossier technique
Établi à partir du code au commit 9a8bd76 (32 fichiers). Chaque élément vient d’une correspondance de motif dans le code: ouvrez le fichier lié avant de vous y fier.
8.1. Couches et modules
Les dossiers sont classés par couche selon leur nom, de l’interface utilisateur jusqu’à l’accès aux données. Comme le classement repose sur les noms seulement, le diagramme ne dit rien des appels entre couches.
Mermaid Vue en couches
flowchart TB
subgraph L_interface["Points d’entrée et API"]
direction TB
interface_0["api<br/>2 fichiers"]
end
subgraph L_domain["Domaine et règles métier"]
direction TB
domain_0["marketwatch<br/>1 fichier"]
end
subgraph L_core["Source principale"]
direction TB
core_0["marketwatch<br/>4 fichiers"]
core_1["(root)<br/>1 fichier"]
end
subgraph L_tests["Tests"]
direction TB
tests_0["test<br/>7 fichiers"]
end
subgraph L_hosting["Build, CI et hébergement"]
direction TB
hosting_0[".github<br/>10 fichiers"]
hosting_1[".devcontainer<br/>2 fichiers"]
hosting_2["api<br/>2 fichiers"]
hosting_3["(root)<br/>1 fichier"]
end
L_interface ~~~ L_domain
L_domain ~~~ L_core
L_core ~~~ L_tests
L_core ~~~ L_hosting
| Module | Couche | Fichiers | Types | Extensions |
|---|---|---|---|---|
marketwatch | Source principale | 5 | 13 | .py |
api | Points d’entrée et API | 2 | 0 | .py |
(root) | Source principale | 1 | 0 | .py |
8.2. Modèle C4
Du contexte du système aux déclarations du code. Chaque niveau conserve les limites des sources disponibles.
UML 1 · Contexte du système
La vue C4 la plus large : qui utilise le projet et sur quels systèmes et stockages externes il s’appuie. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
Person(P_http, "Client HTTP")
System(SYS, "marketwatch", "marketwatch est un client Python archivé pour le jeu boursier virtuel…")
Rel(P_http, SYS, "Utilise")
@enduml
UML 2 · Conteneurs
Un niveau plus près : les parties qui s’exécutent séparément dans le projet, leur langage principal et le chemin des appels entre elles. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
Person(P_http, "Client HTTP")
System_Boundary(SYS, "marketwatch") {
Container(APP, "marketwatch", "Python")
}
Rel(P_http, APP, "Utilise")
@enduml
UML 3 · Composants et couches
Modules regroupés par couche du code. Les limites indiquent l’organisation, sans affirmer une isolation à l’exécution ni des appels. Rendu avec uml-mcp.
Source PlantUML
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "marketwatch") {
Boundary(L0, "Points d’entrée et API", "layer") {
Component(M0_0, "api", "Python", "2 fichiers")
}
Boundary(L1, "Domaine et règles métier", "layer") {
Component(M1_0, "marketwatch", "Python", "1 fichiers")
}
Boundary(L2, "Source principale", "layer") {
Component(M2_0, "marketwatch", "Python", "4 fichiers")
Component(M2_1, "(root)", "Python", "1 fichiers")
}
Boundary(L3, "Tests", "layer") {
Component(M3_0, "test", "Python", "7 fichiers")
}
Boundary(L4, "Build, CI et hébergement", "layer") {
Component(M4_0, ".github", ".yml, .md, .svg", "10 fichiers")
Component(M4_1, ".devcontainer", "Dockerfile, .json", "2 fichiers")
Component(M4_2, "api", "Dockerfile, .yml", "2 fichiers")
Component(M4_3, "(root)", ".json", "1 fichiers")
}
}
@enduml
UML 4 · Code
Déclarations, champs et méthodes sélectionnés, regroupés par fichier source. Aucun héritage ni appel n’est déduit. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "marketwatch" {
package "marketwatch/__init__.py" as F0 {
class "MarketWatch" as T0_0 {
create_session()
generate_csrf_token()
get_client_id()
get_user_id()
get_ledger_id()
get_user_agent()
}
}
package "marketwatch/game.py" as F1 {
class "MarketWatchGame" as T1_0 {
create_game()
buy()
sell()
short()
cover()
reset_game()
}
}
package "marketwatch/schemas.py" as F2 {
class "Game" as T2_0 {
__str__()
__repr__()
}
class "OrderType" as T2_1 {
}
class "PriceType" as T2_2 {
}
class "Term" as T2_3 {
}
}
package "marketwatch/watchlist.py" as F3 {
class "MarketWatchWatchlist" as T3_0 {
delete_item()
add_item()
create()
delete()
watchlists()
watchlist()
}
}
}
@enduml
8.3. Interface publique
Du code extérieur peut utiliser tout ce qui est listé ici. Le projet déclare aussi 13 types publics.
UML Cas d’utilisation
Chaque acteur est un type d’appelant, relié à ce qu’il peut demander au projet. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
left to right direction
actor "Client HTTP" as A_http
rectangle "marketwatch" {
usecase "GET /" as U0
usecase "GET /game" as U1
usecase "GET /portfolio" as U2
usecase "GET /leaderboard" as U3
usecase "GET /card" as U4
usecase "GET /watchlist" as U5
}
A_http --> U0
A_http --> U1
A_http --> U2
A_http --> U3
A_http --> U4
A_http --> U5
@enduml
Routes HTTP 6
Mermaid Carte des routes par préfixe
flowchart LR
api(["HTTP API"])
g0["/"]
api --> g0
g0r0["GET /"]
g0 --> g0r0
g1["/card"]
api --> g1
g1r0["GET /card/'game_id'"]
g1 --> g1r0
g2["/game"]
api --> g2
g2r0["GET /game/'game_id'"]
g2 --> g2r0
g3["/leaderboard"]
api --> g3
g3r0["GET /leaderboard/'game_id'"]
g3 --> g3r0
g4["/portfolio"]
api --> g4
g4r0["GET /portfolio/'game_id'"]
g4 --> g4r0
g5["/watchlist"]
api --> g5
g5r0["GET /watchlist/'watchlist_id'"]
g5 --> g5r0
| Méthode | Chemin | Source |
|---|---|---|
| GET | / | api/app.py:38 |
| GET | /game/{game_id} | api/app.py:42 |
| GET | /portfolio/{game_id} | api/app.py:47 |
| GET | /leaderboard/{game_id} | api/app.py:52 |
| GET | /card/{game_id} | api/app.py:57 |
| GET | /watchlist/{watchlist_id} | api/app.py:62 |
Points d’entrée
api/app.pyfichier d’entrée
8.4. Interface privée
Ces noms sont internes selon les conventions du langage: tiret bas initial, private, static ou pub(crate).
- Assistant préfixé _
- 8
_create_payloadmarketwatch/__init__.py:1206_get_ticker_uidmarketwatch/__init__.py:1258_submitmarketwatch/__init__.py:1269
8.5. Entités et modèle de données 3
Mermaid Diagramme de classes des entités
classDiagram
direction LR
class E0["OrderType"] {
<<enumeration>>
}
class E1["PriceType"] {
<<enumeration>>
}
class E2["Term"] {
<<enumeration>>
}
Une flèche relie un champ à l’entité que son type nomme.
8.6. Logique métier
Une fois écartés le code d’interface et les services et entités ci-dessus, ces classes ont le plus de méthodes.
MarketWatchSource principale, 50 méthodescreate_session, generate_csrf_token, get_client_id, get_user_id, get_ledger_id, get_user_agentMarketWatchGameSource principale, 17 méthodescreate_game, buy, sell, short, cover, reset_gameGameDomaine et règles métier, 2 méthodes__str__, __repr__MarketWatchWatchlistSource principale, 7 méthodesdelete_item, add_item, create, delete, watchlists, watchlist
8.7. Intégrations externes
Clients HTTP
Hôtes nommés dans le code
api.wsj.net1 fichiersmarketwatch/__init__.py:1061httpbin.org1 fichiersmarketwatch/__init__.py:90sso.accounts.dowjones.com1 fichiersmarketwatch/__init__.py:35www.google.com1 fichiersmarketwatch/__init__.py:77
8.8. Stack et dépendances
Python pyproject.toml 3 à l’exécution
Python requirements.txt 3 à l’exécution
Python api/requirements.txt 6 à l’exécution
Dépendances externes
7 paquets déclarés (7 à l’exécution, 0 pour le développement) dans pyproject.toml, requirements.txt, api/requirements.txt.
Tableau des paquets 7
| Paquet | Version | Usage | Rôle | Registre |
|---|---|---|---|---|
beautifulsoup4 | ^4.12.0 | exécution | Extraction web et analyse | pypi.org |
rich | ^13.3.2 | exécution | Ligne de commande | pypi.org |
fastapi | — | exécution | Cadriciel web | pypi.org |
uvicorn | — | exécution | Serveur d’application | pypi.org |
marketwatch | — | exécution | MarketWatch's API | pypi.org |
jinja2 | — | exécution | Gabarits | pypi.org |
pydantic | — | exécution | Validation des données | pypi.org |
8.9. Pipeline CI/CD
5 workflows GitHub Actions, 5 tâches. Chaque boîte est une tâche ; les boîtes à double bord publient ou déploient, et les flèches suivent les dépendances needs.
Mermaid Déroulement du pipeline
flowchart LR
subgraph wf0["Check URLs"]
direction LR
wf0_build["build<br/>ubuntu-latest"]
end
subgraph wf1["Trade on EMA Crossover"]
direction LR
wf1_trade["trade<br/>ubuntu-latest"]
end
subgraph wf2["Python Docs"]
direction LR
wf2_build[["build<br/>ubuntu-latest"]]
end
subgraph wf3["Publish Python to PyPI"]
direction LR
wf3_deploy[["deploy<br/>ubuntu-latest"]]
end
subgraph wf4["Python Test and Build"]
direction LR
wf4_test["test<br/>matrix"]
end
t0(["push"])
t1(["planification"])
t2(["push · demande de fusion"])
t3(["publication · lancement manuel"])
t4(["push · demande de fusion · lancement manuel"])
d0[("GitHub Pages")]
d1[("PyPI")]
t0 --> wf0_build
t1 --> wf1_trade
t2 --> wf2_build
wf2_build -.-> d0
t3 --> wf3_deploy
wf3_deploy -.-> d1
t4 --> wf4_test
| Workflow | Déclencheurs | Tâches | Publie vers |
|---|---|---|---|
Check URLs.github/workflows/URL_Checker.yml | push |
| — |
Trade on EMA Crossover.github/workflows/ema-workflow.yml | planification |
| — |
Python Docs.github/workflows/python-docs.yml | push, demande de fusion |
| GitHub Pages |
Publish Python to PyPI.github/workflows/python-publish.yml | publication, lancement manuel |
| PyPI |
Python Test and Build.github/workflows/python-test.yml | push, demande de fusion, lancement manuel |
| — |
8.10. Déploiement
Mermaid Schéma de déploiement
flowchart LR
repo[("Dépôt GitHub")]
ci[["GitHub Actions<br/>5 workflows"]]
image["Image Docker<br/>FROM python:3.13.0a6-slim"]
pub_GitHub_Pages[("GitHub Pages")]
pub_PyPI[("PyPI")]
host_Vercel("Vercel<br/>vercel.json")
host_MkDocs_site("Site de documentation (MkDocs)<br/>mkdocs.yml")
repo -->|"push ou demande de fusion"| ci
ci -->|"docker build"| image
ci -->|"publie"| pub_GitHub_Pages
ci -->|"publie"| pub_PyPI
ci -.->|"configuré"| host_Vercel
ci -.->|"configuré"| host_MkDocs_site
UML Déploiement
Le nœud extérieur est l’endroit où le code s’exécute. Chaque image de base pointe vers ce qu’elle construit, les flèches pleines mènent aux bases de données et les pointillées aux services externes. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
node "Image Docker" as H {
artifact "marketwatch" as APP
}
artifact "FROM mcr.microsoft.com/vscode/devconta…" as IMG0
IMG0 ..> APP : construit
artifact "FROM python:3.13.0a6-slim" as IMG1
IMG1 ..> APP : construit
artifact "FROM python:3.13.0a6-slim" as IMG2
IMG2 ..> APP : construit
cloud "Vercel" as X0
X0 ..> APP
@enduml
Où il s’exécute
- Image Docker ×2
- Pile Docker Compose
- Vercel
- Conteneur de développement ×2
- Site MkDocs
- Workflow de déploiement CI ×2
Publié vers
Images Docker de base
mcr.microsoft.com/vscode/devcontainers/python: python:3.13.0a6-slim python:3.13.0a6-slim
8.11. Sécurité
Contrôles
Chaîne d’approvisionnement
- Mises à jour Dependabot
- Mises à jour Renovate
- Politique de sécurité
- Fichier de verrouillage (dépendances figées)
- Hooks pre-commit
Variables d’environnement 2
La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.
8.12. Tests automatisés
- Fichiers de test
- 7
- Fichiers source
- 8
- Cas de test, environ
- 52
- Tests unitaires
- 7
Couverture de code
Aucun rapport chiffré de couverture dans les sources analysées.
Où sont les tests
test 7
Intégration continue
- Python Docs
ctest- Python Test and Build
pytest
UML Pipeline CI
Le workflow GitHub Actions principal suit ces étapes. Les tâches lancées en parallèle sont côte à côte. Rendu avec uml-mcp.
Source PlantUML
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
title Python Docs
start
partition "build" {
:actions/checkout;
:Check for changes in /docs;
:Set up Python 3.8;
:Install dependencies;
:Test with doctest;
:Build mkdocs;
:Archive site;
:Configure Git;
}
stop
@enduml
Rien trouvé pour: Services, Base de données, Supervision.
9. Types et structure des fichiers
13 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t342c57589891["MarketWatch"] {
__init__()
create_session()
generate_csrf_token()
get_client_id()
}
class te2660179edef["MarketWatchGame"] {
__init__()
create_game()
buy()
sell()
}
class tc6adc7beb6df["MarketWatchException"] {
__init__()
}
class tc9e9c1f2c012["MarketWatchGameException"] {
__init__()
}
class td4c12f6259f0["Term"] {
}
class tb06037cc6ec7["PriceType"] {
}
class t3d7a45c40645["OrderType"] {
}
class t7d8a40bf3f38["GameSettings"] {
__init__()
__str__()
}
class tc2b2eb26d380["Order"] {
__init__()
__str__()
__repr__()
}
class t45b8a20e40d7["Position"] {
__init__()
__str__()
__repr__()
}
class t0783a857f7ca["Player"] {
__init__()
__str__()
__repr__()
}
class t6ddf82fcb3c7["Game"] {
__init__()
__str__()
__repr__()
}
class b4a739b8cc727["MarketWatch"] {
<<unresolved_base>>
}
b4a739b8cc727 <|-- te2660179edef
class b218d46208022["Exception"] {
<<unresolved_base>>
}
b218d46208022 <|-- tc6adc7beb6df
b218d46208022 <|-- tc9e9c1f2c012
class bcdccbbebe0a2["Enum"] {
<<unresolved_base>>
}
bcdccbbebe0a2 <|-- td4c12f6259f0
bcdccbbebe0a2 <|-- tb06037cc6ec7
bcdccbbebe0a2 <|-- t3d7a45c40645
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
10. Référence
20 / 20 fichiers admissibles lus (65 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
12. Fichiers à lire 3
13. Glossaire
Dépôt
Les fichiers source, la configuration et l’historique versionné d’un projet.
README
Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.
Dépendance
Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.
HTTP
Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.
Session
Un état conservé entre plusieurs requêtes, souvent pour suivre un utilisateur connecté. L’authentification et les permissions restent des vérifications distinctes.
Conteneur
Un environnement de processus isolé créé à partir d’une image. Les données persistantes nécessitent un stockage hors de son système de fichiers temporaire.
Port publié
Un port de l’hôte associé au port d’un service dans un conteneur. Sa publication peut rendre le service accessible hors du réseau des conteneurs.
14. Références
- antoinebou12. (2026, 5 novembre). marketwatch. [Software repository] github.com.
- antoinebou12. (2026, 5 novembre). marketwatch: README. [Repository documentation] github.com.
- antoinebou12. (2026, 5 novembre). marketwatch/game.py. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). marketwatch/__init__.py. [Source file] github.com.
- antoinebou12. (2026, 5 novembre). README.md. [Source file] github.com.
- Boucher, A. (2026, 13 avril). Bibliothèque Python pour le trading virtuel MarketWatch. [Project article] antoineboucher.info.
- Boucher, A. (2021, 6 septembre). Bibliothèque Python MarketWatch. [Project article] antoineboucher.info.
- Boucher, A. (2026, 23 octobre). marketwatch : Un client pour un jeu boursier virtuel. [Project article] antoineboucher.info.
Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.