Skip to content
Merged

f25 #81

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 0 additions & 100 deletions .circleci/config.yml

This file was deleted.

47 changes: 47 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: ci

on:
push:
pull_request:
types:
- closed
branches:
- main

jobs:
run:
name: to-${{ matrix.torch }}-tr-${{ matrix.transformers }}-ci ${{ matrix.os }}-${{ matrix.python }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python: ['3.12']
steps:
- uses: actions/checkout@v3

- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}

- name: Install requirements
run: python -m pip install -r requirements.txt

- name: Install requirements dev
run: python -m pip install -r requirements-dev.txt

- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-

- name: pip freeze
run: python -m pip freeze

- name: run tests
run: |
pip install pytest
PYTHONPATH=. UNITTEST_GOING=1 pytest --durations=10 _unittests --ignore-glob=**pygame*.py
4 changes: 2 additions & 2 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ jobs:
grep ERROR doc.txt
exit 1
fi
if [[ $(grep WARNING doc.txt | grep -v 'download' | grep -v 'CERTIFICATE_VERIFY_FAILED') ]]; then
if [[ $(grep WARNING doc.txt | grep -v 'download' | grep -v 'CERTIFICATE_VERIFY_FAILED' | grep -v '[image.not_readable]') ]]; then
echo "Documentation produces warnings."
cat doc.txt | grep WARNING | grep -v 'CERTIFICATE_VERIFY_FAILED' | grep -v 'download'
cat doc.txt | grep WARNING | grep -v 'CERTIFICATE_VERIFY_FAILED' | grep -v 'download' | grep -v '[image.not_readable]'
exit 1
fi

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ prof
temp_*
essai.txt
schema.proto
images/*
.ipynb_checkpoints
_latex/ensae/*.aux
_latex/ensae/*.idx
Expand Down
3 changes: 0 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
:target: https://ci.appveyor.com/project/sdpython/teachpyx
:alt: Build Status Windows

.. image:: https://dl.circleci.com/status-badge/img/gh/sdpython/teachpyx/tree/main.svg?style=svg
:target: https://dl.circleci.com/status-badge/redirect/gh/sdpython/teachpyx/tree/main

.. image:: https://badge.fury.io/py/teachpyx.svg
:target: https://pypi.org/project/teachpyx/

Expand Down
7 changes: 0 additions & 7 deletions _doc/api/tools/blockdiag_helper.rst

This file was deleted.

1 change: 0 additions & 1 deletion _doc/api/tools/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ teachpyx.tools
:caption: modules


blockdiag_helper
data_helper
graphviz_helper
helpers
Expand Down
4 changes: 3 additions & 1 deletion _doc/articles/2024/2024-11-31-route2024.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _l-feuille-route-ensae-2024:

2024-11-31 : rappel feuille de route 2024
=========================================

Expand Down Expand Up @@ -26,7 +28,7 @@ Fin des classes puis :ref:`les itérateurs <nbl-practice-py-base-classe_iterateu
Séance 4
++++++++

Nous garderons les dames et l'algortithme minimax pour une autre fois peut être.
Nous garderons les dames et l'algorithme minimax pour une autre fois peut être.
Cette séance à propos de la programmation dynamique.
Le premier exercice consiste à déterminer le nombre minimal de pièces
de monnaie pour écrire un montant et de retrouver la séquence minimale
Expand Down
86 changes: 86 additions & 0 deletions _doc/articles/2025/2025-09-03-ensae.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
2025-09-03 : ENSAE
==================

**Objectif**

Vous permettre de maîtriser les outils nécessaires à la réalisation de vos
projets, à l'ENSAE et ce qui suivra.

Le langage python est un des plus simples et un des plus populaires.
Il est open source et fonctionne sur tous les systèmes d'exploitation.
Il permet d'accomplir à peu près toutes les tâches, que ce soit
des calculs numériques, la création d'un site web, l'automisation de
tâches répétitives et complexes.

**Notions à maîtriser**

* éléments de bases du langages (boucles, listes, tests, fonctions)
* classes (attributes, méthodes, opérateurs, héritages)
* graphes, arbre
* numpy (opérations standard, broadcasting)
* format de données (JSON, XML, HTML, csv)
* tests unitaires (package unittest, git, pull request)
* profiling
* algorithmes
* tri fusion
* recherche dichotomique
* graphes (composantes connexes, Kruskal, ...)
* programmation dynamique (chemin plus court dans un graphe, distance d'édition)
* problème NP-complet tels que le voyageur de commerce
* comment résoudre un sudoku
* algorithme alpha-beta pour résoudre un jeu de réflexion (dames, échecs, othello, ...)

**Notions non abordées**

Manipulation de données, pandas, machine learning, elles le seront en seconde année et non en première année.

**Evaluation**

1 TD noté. Les classes seront abordées et un problème algorithmique.
Voir aussi les précédents énoncés : :ref:`l-exams`.

**Le Chat, ChatGPT, Gemini, ...**

Ces outils changent véritablement la façon d'écrire du code.
Ils permettent d'aller parfois trois à quatre fois plus vite
pour résoudre un problème. Ils peuvent fournir une bonne base pour écrire
de la documentation, des tests unitaires, pour créer un graphique,
traduire un programme dans un autre langage, écrire un algorithme connu
dans un cadre précis.

Ils ne fournissent pas la solution mais une bonne base de départ qu'on peut retravailler
ou ajouter à d'autres bouts de code construits de la même façon.
Pour comprendre les réponses, il est important de connaître le langage
et quelques algorithmes.

La plupart du temps, on n'invente pas de nouveau, on assemble des algortihmes
existants ou on les adapte dans des cas où la version classique est trop longue,
ou ne prend pas en compte une contrainte particulière...

.. image:: dames_chatgpt.png

A qui appartient le code écrit ?

**Ressources**

* Ce site : `sdpython.github.io/doc/teachpyx/dev/ <https://sdpython.github.io/doc/teachpyx/dev/>`_
* :ref:`l-book-python`
* exercices sur le langage :ref:`l-python`
* exercices sur des algortihmes :ref:`l-algo`
* examens passés :ref:`l-exams`
* `Des aspects plus mathématiques d'algorithmes <https://sdpython.github.io/doc/mlstatpy/dev/>`_

**Getting Started**

* `cheat sheet python <https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf>`_
* `Anaconda <https://www.anaconda.com/>`_,
`miniconda <https://docs.conda.io/projects/miniconda/en/latest/>`_,
`mamba <https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html>`_
* `Visual Studio Code <https://code.visualstudio.com/>`_
* `git <https://git-scm.com/>`_, `github <https://github.com/>`_
* `notebook <https://jupyter.org/>`_

**Feuilles de routes**

* :ref:`l-feuille-route-ensae-2024`
* :ref:`l-feuille-route-ensae-2025`
85 changes: 85 additions & 0 deletions _doc/articles/2025/2025-11-31-route2025.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
.. _l-feuille-route-ensae-2025:

2025-11-31 : rappel feuille de route 2025
=========================================

Le plan des séances est parfois changé après que celles-ci ont eu lieu.

Suggestions de sujets pour les séances.

Séance 1
++++++++

* introduction aux classes
* attributs et méthodes
* constructeur ``__init__``
* méthodes spéciales ``__str__``, ``__add__``
* propriété ``@property``
* package dataclass

.. code-block:: python

@dataclass
class SerieTelevisee:
duree_episode: float
n_episodes: int
n_saisons: int
categorie: str

def __post_init__(self):
self.duree_total = self.duree_episode * self.n_episodes * self.n_saisons

Utilisation de ChatGPT, Gemini, LeChat, ... pour convertir un code
sans classe en un code avec des classes et réciproquement.

Séance 2
++++++++

* héritage
* itérateurs
* tests unitaires

Ecriture de tests unitaires avec ChatGPT, Gemini, LeChat, ...

Séance 3
++++++++

* numpy, broadcasting
* implémentation d'un chi-deux sans boucle

Séance 4
++++++++

* plus court chemin dans un graphe
* voyageur de commerce
* distance d'édition (si le temps le permet)

Séance 5
++++++++

* profiling
* :ref:`Recherche à base de préfixes <nbl-practice-years-2023-prefix_search>` en terme algorithmique.

Séance 6
++++++++

:ref:`Expressions régulières <nbl-practice-py-base-exercice_regex>`,
:ref:`Modules, fichiers, expression régulières <nbl-practice-tds-base-module_file_regex>`

Séance 7
++++++++

Exemple d'assemblage d'algorithme avec le problème du postier chinois.

Révision avec un TD noté.
Utilisation de ChatGPT, LeChat, Gemini après quelques minutes.

Séance 8
++++++++

Quelques rappels en préparation du TD noté.

TD noté 1h30 en seconde partie.
Classes et un algorithme.
Enoncés des années précédentes :
:ref:`l-exams`.
2 changes: 2 additions & 0 deletions _doc/articles/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Ou *blog*.
:caption: 2025
:maxdepth: 1

2025/2025-11-31-route2025
2025/2025-09-03-ensae
2025/2025-04-01-route2025
2025/2025-03-01-route2025
2025/2025-01-31-local_llm
Expand Down
Loading