Aller au contenu
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.

Bibliothèque Archivé
  • Mis à jour
  • 20
  • Python · 77.68%
  • Apache-2.0
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.

Python77.68%
77.68%103 813 octets
Jupyter Notebook13.22%
13.22%17 674 octets
Jinja7.65%
7.65%10 228 octets
Dockerfile1.45%
1.45%1 934 octets
Langage%Octets
Python77.68%103 813
Jupyter Notebook13.22%17 674
Jinja7.65%10 228
Dockerfile1.45%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).

Diagramme de cas d’utilisation de marketwatch : Obtenir le cours d’une action; Acheter, vendre ou couvrir; Lire portefeuille et ordres; Gérer les listes de suivi; Servir des cartes HTML; Trader sur croisement EMAmarketwatchObtenir le cours d’une actionAcheter, vendre ou couvrirLire portefeuille et ordresGérer les listes de suiviServir des cartes HTMLTrader sur croisement EMAJoueur«système»Site MarketWatch«système»GitHub Actions
Acteurs à gauche (personnes) et à droite (systèmes externes) ; chaque ovale est un cas d’utilisation appuyé par les fichiers cités ci-dessous.
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

  1. Installer le paquet avec pip install marketwatch.
  2. Créer MarketWatch(email, password, skip_login=True) puis appeler get_price("AAPL").
  3. Pour les appels de partie, se connecter avec de vrais identifiants ; le README prévient que le captcha bloque cette étape.
  4. Une fois connecté, appeler get_games(), puis buy(game_id, "AAPL", 100).
  5. 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.

Ouvrir dans un nouvel onglet 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.

README.md · Installation
pip install marketwatch
README.md · Installation
pip install git+https://github.com/antoinebou12/marketwatch.git
README.md · Installation
git clone https://github.com/antoinebou12/marketwatch.git

5. 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

Here are some examples of how you can use the MarketWatch class:
Lire les instructions complètes ↗

5.2. Usage (getting-started.md)

docs/getting-started.md

First, you need to create an account on MarketWatch and then create a virtual game. Once you have created a game, you will be able to get the game’s id from its URL, which will be used throughout the library.
Lire les instructions complètes ↗
Développement et contributions

5.3. Contributing

README.md

Contributions are welcome. Please open an issue or submit a pull request.
Lire les instructions complètes ↗
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.

Composants du système Contexte
Mermaid Diagramme interactif

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de marketwatch
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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
Modules et couche principale
ModuleCoucheFichiersTypesExtensions
marketwatchSource principale513.py
apiPoints d’entrée et API20.py
(root)Source principale10.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
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
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
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
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
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éthodeCheminSource
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

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

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.

EntitéNaturePremiers champs
OrderTypeÉnumération
PriceTypeÉnumération
TermÉnumération

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.

MarketWatch Source principale, 50 méthodes
create_session, generate_csrf_token, get_client_id, get_user_id, get_ledger_id, get_user_agent
MarketWatchGame Source principale, 17 méthodes
create_game, buy, sell, short, cover, reset_game
Game Domaine et règles métier, 2 méthodes
__str__, __repr__
MarketWatchWatchlist Source principale, 7 méthodes
delete_item, add_item, create, delete, watchlists, watchlist

8.7. Intégrations externes

Clients HTTP

httpx

Hôtes nommés dans le code

8.8. Stack et dépendances

Python pyproject.toml 3 à l’exécution

Ouvrir le manifeste

Python requirements.txt 3 à l’exécution

Ouvrir le manifeste

Python api/requirements.txt 6 à l’exécution

Ouvrir le manifeste

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
Dépendances externes
PaquetVersionUsageRôleRegistre
beautifulsoup4^4.12.0exécutionExtraction web et analysepypi.org
rich^13.3.2exécutionLigne de commandepypi.org
fastapi—exécutionCadriciel webpypi.org
uvicorn—exécutionServeur d’applicationpypi.org
marketwatch—exécutionMarketWatch's APIpypi.org
jinja2—exécutionGabaritspypi.org
pydantic—exécutionValidation des donnéespypi.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
Workflows, déclencheurs, tâches et cibles
WorkflowDéclencheursTâchesPublie vers
Check URLs
.github/workflows/URL_Checker.yml
push
  • build ubuntu-latest
    actions/checkout · urls-checker
—
Trade on EMA Crossover
.github/workflows/ema-workflow.yml
planification
  • trade ubuntu-latest
    Checkout code · Set up Python · Install dependencies · Run trading script
—
Python Docs
.github/workflows/python-docs.yml
push, demande de fusion
  • build ubuntu-latest
    actions/checkout · Check for changes in /docs · Set up Python 3.8 · Install dependencies · Test with doctest · Build mkdocs
GitHub Pages
Publish Python to PyPI
.github/workflows/python-publish.yml
publication, lancement manuel
  • deploy ubuntu-latest
    actions/checkout · Set up Python · Install dependencies · Build package · Publish package
PyPI
Python Test and Build
.github/workflows/python-test.yml
push, demande de fusion, lancement manuel
  • test matrix
    actions/checkout · Set up Python · Install dependencies · Export Environment Variables · Test with pytest · Build package
—

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
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

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

Variables d’environnement 2

La page reprend les noms sans leurs valeurs et souligne ceux qui ressemblent à des secrets.

MARKETWATCH_PASSWORD MARKETWATCH_USERNAME

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

UML Pipeline CI
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

  1. antoinebou12. (2026, 5 novembre). marketwatch. [Software repository] github.com.
  2. antoinebou12. (2026, 5 novembre). marketwatch: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, 5 novembre). marketwatch/game.py. [Source file] github.com.
  4. antoinebou12. (2026, 5 novembre). marketwatch/__init__.py. [Source file] github.com.
  5. antoinebou12. (2026, 5 novembre). README.md. [Source file] github.com.
  6. Boucher, A. (2026, 13 avril). Bibliothèque Python pour le trading virtuel MarketWatch. [Project article] antoineboucher.info.
  7. Boucher, A. (2021, 6 septembre). Bibliothèque Python MarketWatch. [Project article] antoineboucher.info.
  8. 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.