** Remarque: cet article est une niche décente **
J'étais en train de mourir d'envie d'une fonctionnalité qui n'était pas dans le package python que j'utilisais. Parfois, les chercheurs doivent préparer des choses que d'autres n'utilisent pas. Cependant, la fonction est une niche, et [^ douki] ne peut pas être reçu en tant que pull request. Alors j'ai fait un patch.
Comme vous le savez, il existe une commande appelée patch dans la série UNIX. Utilisez ceci. C'est bien avec git, mais ** je voulais écrire dans l'article "Je n'ai pas fait de changements étranges. La différence n'est qu'ici." (Important). ** **
Vous pouvez afficher les modifications que vous avez apportées en faisant git diff. Utilisez donc git juste pour créer le patch. Il est également bon de pouvoir remonter l’histoire. Donc, après tout, j'utilise git.
Tout d'abord, j'ai dû passer au code source du package que j'utilisais pour le modifier. Peu importe où vous vous trouvez dans l'environnement virtuel, vous pouvez utiliser une seule doublure. J'ai réécrit le hoge suivant et je me suis envolé.
cd $(python -c "import hoge as target; from pathlib import Path; print(Path(target.__file__).parent)")
Donc, avant de modifier, gérez git pour le moment.
git init
git add *
git commit
git branch patch
git checkout patch
vim hoge.py
Eh bien, git add * peut même inclure le cache, donc c'est approprié. Je suis un vimmer, donc j'édite avec vim, mais bien sûr, il n'est pas nécessaire que ce soit vim. Difficulté lorsque vous avez terminé les modifications.
mkdir ~/warui_patch
git diff > ~/warui_patch/complex.patch
Ceci termine la création du patch.
Vous trouverez ci-dessous un script shell pour appliquer le correctif précédent au package. Ci-dessous, le complex.patch créé précédemment est appliqué au package mne. J'ai quelques options.
--- R: retour du patch --- p: Afficher le chemin du package correspondant --- h: Aide
Le chemin de ce package s'affiche lorsque je souhaite modifier quelque chose
cd $(sh ./patcher -p)
En option, il vous permet de sauter sous le paquet. Bien sûr, même dans un environnement virtuel, il volera avec la volonté du fer.
#!/usr/bin/env sh
OPT=$1
PACKAGE='mne'
PATCH='complex.patch'
make_python_path_code () {
echo "import $PACKAGE; from pathlib import Path; print(Path($1.__file__).parent)"
}
make_python_path () {
echo "$(python -c "$(make_python_path_code $1)")/"
}
patch_python () {
patch $OPT -u -p 1 -d $(make_python_path $1) < $2
}
if [ "$1" = "-h" ]; then
echo Patch script for python.
echo ========================
echo -h: Show this message
echo -R: Reverse patch
echo -p: Print script dir
exit
fi
if [ "$1" = "-p" ]; then
echo $(make_python_path $PACKAGE)
exit
fi
patch_python $PACKAGE $PATCH
Je ne veux pas vraiment réécrire le paquet, même à des fins de recherche. Épicé ... (´ ・ ω ・ `)
[^ douki]: Je voulais transformer les ondes cérébrales en ondelettes pour calculer la moyenne des valeurs absolues à partir de nombres complexes et estimer la taille des ondes cérébrales dans le cerveau, mais je voulais des nombres complexes au lieu de valeurs absolues moyennes. Il est. Le coût de calcul devient dangereux car il n'est pas moyenné.