mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 22:23:23 +00:00
Merge branch 'poetry' into 'master'
Using poetry as a dependency system for development See merge request ae/Sith!281
This commit is contained in:
commit
bf2b796936
15
.envrc
15
.envrc
@ -1 +1,14 @@
|
|||||||
source ./env/bin/activate
|
if [[ ! -f pyproject.toml ]]; then
|
||||||
|
log_error 'No pyproject.toml found. Use `poetry new` or `poetry init` to create one first.'
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
local VENV=$(poetry env list --full-path | cut -d' ' -f1)
|
||||||
|
if [[ -z $VENV || ! -d $VENV/bin ]]; then
|
||||||
|
log_error 'No poetry virtual environment found. Use `poetry install` to create one first.'
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
export VIRTUAL_ENV=$VENV
|
||||||
|
export POETRY_ACTIVE=1
|
||||||
|
PATH_add "$VENV/bin"
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -4,6 +4,9 @@ db.sqlite3
|
|||||||
*.mo
|
*.mo
|
||||||
*__pycache__*
|
*__pycache__*
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
pyrightconfig.json
|
||||||
|
poetry.lock
|
||||||
|
dist/
|
||||||
.vscode/
|
.vscode/
|
||||||
env/
|
env/
|
||||||
doc/html
|
doc/html
|
||||||
|
@ -6,20 +6,14 @@ test:
|
|||||||
script:
|
script:
|
||||||
- env
|
- env
|
||||||
- apt-get update
|
- apt-get update
|
||||||
- apt-get install -y gettext python3-xapian libgraphviz-dev
|
- apt-get install -y gettext libxapian-dev libgraphviz-dev
|
||||||
- pushd /usr/lib/python3/dist-packages/xapian && ln -s _xapian* _xapian.so && popd
|
- pip install .[testing]
|
||||||
- export PYTHONPATH="/usr/lib/python3/dist-packages:$PYTHONPATH"
|
|
||||||
- python -c 'import xapian' # Fail immediately if there is a problem with xapian
|
|
||||||
- pip install -U -r requirements.txt
|
|
||||||
- pip install -U coverage
|
|
||||||
- mkdir -p /dev/shm/search_indexes
|
- mkdir -p /dev/shm/search_indexes
|
||||||
- ln -s /dev/shm/search_indexes sith/search_indexes
|
- ln -s /dev/shm/search_indexes sith/search_indexes
|
||||||
- ./manage.py compilemessages
|
- ./manage.py compilemessages
|
||||||
- coverage run ./manage.py test
|
- coverage run ./manage.py test
|
||||||
- coverage html
|
- coverage html
|
||||||
- coverage report
|
- coverage report
|
||||||
- cd doc
|
|
||||||
- make html # Make documentation
|
|
||||||
variables:
|
variables:
|
||||||
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip_tests"
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip_tests"
|
||||||
cache:
|
cache:
|
||||||
|
2
.mailmap
2
.mailmap
@ -8,7 +8,7 @@ Och <francescowitz68@gmail.com>
|
|||||||
Partoo <joqaste@gmail.com>
|
Partoo <joqaste@gmail.com>
|
||||||
Skia <skia@hya.sk> <lordbanana25@mailoo.org>
|
Skia <skia@hya.sk> <lordbanana25@mailoo.org>
|
||||||
Skia <skia@hya.sk> <skia@libskia.so>
|
Skia <skia@hya.sk> <skia@libskia.so>
|
||||||
Sli <klmp200@klmp200.net>
|
Sli <klmp200@klmp200.net> <antoine@bartuccio.fr>
|
||||||
Soldat <ryan-68@live.fr>
|
Soldat <ryan-68@live.fr>
|
||||||
Terre <jbaptiste.lenglet+git@gmail.com>
|
Terre <jbaptiste.lenglet+git@gmail.com>
|
||||||
Vial <robin.trioux@utbm.fr>
|
Vial <robin.trioux@utbm.fr>
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
# Required
|
# Required
|
||||||
version: 2
|
version: 2
|
||||||
|
|
||||||
|
# Allow installing xapian-bindings in pip
|
||||||
|
build:
|
||||||
|
apt_packages:
|
||||||
|
- libxapian-dev
|
||||||
|
|
||||||
# Build documentation in the doc/ directory with Sphinx
|
# Build documentation in the doc/ directory with Sphinx
|
||||||
sphinx:
|
sphinx:
|
||||||
configuration: doc/conf.py
|
configuration: doc/conf.py
|
||||||
@ -13,6 +18,9 @@ formats: all
|
|||||||
|
|
||||||
# Optionally set the version of Python and requirements required to build your docs
|
# Optionally set the version of Python and requirements required to build your docs
|
||||||
python:
|
python:
|
||||||
version: 3.6
|
version: 3.8
|
||||||
install:
|
install:
|
||||||
- requirements: requirements.txt
|
- method: pip
|
||||||
|
path: .
|
||||||
|
extra_requirements:
|
||||||
|
- docs
|
||||||
|
@ -160,12 +160,13 @@ Sentry
|
|||||||
|
|
||||||
Sentry est une plate-forme libre qui permet de se tenir informer des bugs qui ont lieu sur le site. À chaque crash du logiciel (erreur 500), une erreur est envoyée sur la plate-forme et est indiqué précisément à quelle ligne de code celle-ci a eu lieu, à quelle heure, combien de fois, avec quel navigateur la page a été visitée et même éventuellement un commentaire de l'utilisateur qui a rencontré le bug.
|
Sentry est une plate-forme libre qui permet de se tenir informer des bugs qui ont lieu sur le site. À chaque crash du logiciel (erreur 500), une erreur est envoyée sur la plate-forme et est indiqué précisément à quelle ligne de code celle-ci a eu lieu, à quelle heure, combien de fois, avec quel navigateur la page a été visitée et même éventuellement un commentaire de l'utilisateur qui a rencontré le bug.
|
||||||
|
|
||||||
Virtualenv
|
Poetry
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
|
|
||||||
`Utiliser virtualenv <https://python-guide-pt-br.readthedocs.io/fr/latest/dev/virtualenvs.html>`__
|
`Utiliser Poetry <https://python-poetry.org/docs/basic-usage/>`__
|
||||||
|
|
||||||
Virtualenv est un utilitaire permettant d'installer un environnement Python de manière locale sans avoir besoin des droits root pour y installer des dépendances. Il est très utilisé pour gérer plusieurs projets différents en parallèles puisqu'il permet d'avoir sur sa machine plusieurs environnements différents et donc plusieurs versions d'une même dépendance dans plusieurs projets différent sans impacter le système sur lequel le tout est installé.
|
Poetry est un utilitaire qui permet de créer et gérer des environements Python de manière simple et intuitive. Il permet également de gérer et mettre à jour le fichier de dépendances.
|
||||||
|
L'avantage d'utiliser poetry (et les environnements virtuels en général) est de pouvoir gérer plusieurs projets différents en parallèles puisqu'il permet d'avoir sur sa machine plusieurs environnements différents et donc plusieurs versions d'une même dépendance dans plusieurs projets différent sans impacter le système sur lequel le tout est installé.
|
||||||
|
|
||||||
Black
|
Black
|
||||||
~~~~~
|
~~~~~
|
||||||
|
@ -22,7 +22,7 @@ VsCode
|
|||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Il faut installer black dans son virtualenv pour cet éditeur
|
Il faut installer black dans son environement virtuel pour cet éditeur
|
||||||
|
|
||||||
Black est directement pris en charge par l'extension pour le Python de VsCode, il suffit de rentrer la configuration suivante :
|
Black est directement pris en charge par l'extension pour le Python de VsCode, il suffit de rentrer la configuration suivante :
|
||||||
|
|
||||||
|
@ -6,11 +6,11 @@ Dépendances du système
|
|||||||
|
|
||||||
Certaines dépendances sont nécessaires niveau système :
|
Certaines dépendances sont nécessaires niveau système :
|
||||||
|
|
||||||
* virtualenv
|
* poetry
|
||||||
* libmysqlclient
|
* libmysqlclient
|
||||||
* libssl
|
* libssl
|
||||||
* libjpeg
|
* libjpeg
|
||||||
* python3-xapian
|
* libxapian-dev
|
||||||
* zlib1g-dev
|
* zlib1g-dev
|
||||||
* python3
|
* python3
|
||||||
* gettext
|
* gettext
|
||||||
@ -22,8 +22,11 @@ Sur Ubuntu
|
|||||||
|
|
||||||
.. sourcecode:: bash
|
.. sourcecode:: bash
|
||||||
|
|
||||||
sudo apt install libmysqlclient-dev libssl-dev libjpeg-dev zlib1g-dev python3-dev libffi-dev python3-dev libgraphviz-dev pkg-config python3-xapian gettext git
|
sudo apt install libssl-dev libjpeg-dev zlib1g-dev python3-dev libffi-dev python3-dev libgraphviz-dev pkg-config libxapian-dev gettext git
|
||||||
sudo pip3 install virtualenv
|
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -
|
||||||
|
|
||||||
|
# To include mysql for importing old bdd
|
||||||
|
sudo apt install libmysqlclient-dev
|
||||||
|
|
||||||
Sur MacOS
|
Sur MacOS
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
@ -32,7 +35,7 @@ Pour installer les dépendances, il est fortement recommandé d'installer le ges
|
|||||||
|
|
||||||
.. sourcecode:: bash
|
.. sourcecode:: bash
|
||||||
|
|
||||||
brew install git python xapian graphviz
|
brew install git python xapian graphviz poetry
|
||||||
|
|
||||||
# Si vous aviez une version de python ne venant pas de homebrew
|
# Si vous aviez une version de python ne venant pas de homebrew
|
||||||
brew link --overwrite python
|
brew link --overwrite python
|
||||||
@ -41,8 +44,8 @@ Pour installer les dépendances, il est fortement recommandé d'installer le ges
|
|||||||
# Pour bien configurer gettext
|
# Pour bien configurer gettext
|
||||||
brew link gettext # (suivez bien les instructions supplémentaires affichées)
|
brew link gettext # (suivez bien les instructions supplémentaires affichées)
|
||||||
|
|
||||||
# Pour installer virtualenv
|
# Pour installer poetry
|
||||||
pip3 install virtualenv
|
pip3 install poetry
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -56,15 +59,11 @@ Installer le projet
|
|||||||
git clone https://ae-dev.utbm.fr/ae/Sith.git
|
git clone https://ae-dev.utbm.fr/ae/Sith.git
|
||||||
cd Sith
|
cd Sith
|
||||||
|
|
||||||
# Prépare et active l'environnement du projet
|
# Création de l'environnement et installation des dépendances
|
||||||
virtualenv --system-site-packages --python=python3 env
|
poetry install
|
||||||
source env/bin/activate
|
|
||||||
|
|
||||||
# Installe les dépendances du projet
|
# Activation de l'environnement virtuel
|
||||||
pip install -r requirements.txt
|
poetry shell
|
||||||
|
|
||||||
# Si vous avez des problèmes avec graphiviz
|
|
||||||
pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"
|
|
||||||
|
|
||||||
# Prépare la base de donnée
|
# Prépare la base de donnée
|
||||||
./manage.py setup
|
./manage.py setup
|
||||||
@ -74,7 +73,7 @@ Installer le projet
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Pour éviter d'avoir à utiliser la commande source sur le virtualenv systématiquement, il est possible de consulter :ref:`direnv`.
|
Pour éviter d'avoir à utiliser la commande poetry shell systématiquement, il est possible de consulter :ref:`direnv`.
|
||||||
|
|
||||||
Configuration pour le développement
|
Configuration pour le développement
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
65
pyproject.toml
Normal file
65
pyproject.toml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
[tool.poetry]
|
||||||
|
name = "Sith"
|
||||||
|
version = "1"
|
||||||
|
description = "Le web Sith de l'AE"
|
||||||
|
authors = [
|
||||||
|
"Skia <skia@hya.sk>",
|
||||||
|
"klmp200 <antoine@bartuccio.fr>",
|
||||||
|
"Krophil <pierre.brunet@krophil.fr>",
|
||||||
|
"Och <francescowitz68@gmail.com>",
|
||||||
|
"tleb <tleb@openmailbox.org>",
|
||||||
|
"Soldat <ryan-68@live.fr>",
|
||||||
|
"Nabos <gnikwo@hotmail.com>",
|
||||||
|
"Terre <jbaptiste.lenglet+git@gmail.com>",
|
||||||
|
"Lo-J <renaudg779@gmail.com>",
|
||||||
|
"Vial <robin.trioux@utbm.fr>"
|
||||||
|
]
|
||||||
|
documentation = "https://sith-ae.readthedocs.io/"
|
||||||
|
homepage = "https://ae.utbm.fr/"
|
||||||
|
license = "GPL-3.0-only"
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = "^3.7"
|
||||||
|
Django = "^2.2"
|
||||||
|
Pillow = "^8.3.2"
|
||||||
|
mistune = "^0.8.4"
|
||||||
|
django-jinja = "^2.9.1"
|
||||||
|
pyOpenSSL = "^21.0.0"
|
||||||
|
pytz = "^2021.1"
|
||||||
|
djangorestframework = "^3.12.4"
|
||||||
|
django-phonenumber-field = "^5.2.0"
|
||||||
|
phonenumbers = "^8.12.33"
|
||||||
|
django-ajax-selects = "^2.1.0"
|
||||||
|
reportlab = "^3.6.1"
|
||||||
|
django-haystack = "^3.1.1"
|
||||||
|
xapian-haystack = "^2.1.1"
|
||||||
|
xapian-bindings = "^0.1.0"
|
||||||
|
libsass = "^0.21.0"
|
||||||
|
django-ordered-model = "^3.4.3"
|
||||||
|
django-simple-captcha = "^0.5.14"
|
||||||
|
python-dateutil = "^2.8.2"
|
||||||
|
sentry-sdk = "^1.4.3"
|
||||||
|
graphviz = "^0.17"
|
||||||
|
|
||||||
|
# Extra optional dependencies
|
||||||
|
mysqlclient = { version = "^2.0.3", optional = true }
|
||||||
|
coverage = {version = "^5.5", optional = true}
|
||||||
|
|
||||||
|
# Docs extra dependencies
|
||||||
|
Sphinx = {version = "^4.2.0", optional = true}
|
||||||
|
sphinx-rtd-theme = {version = "^1.0.0", optional = true}
|
||||||
|
sphinx-copybutton = {version = "^0.4.0", optional = true}
|
||||||
|
|
||||||
|
[tool.poetry.extras]
|
||||||
|
testing = ["coverage"]
|
||||||
|
migration = ["mysqlclient"]
|
||||||
|
docs = ["Sphinx", "sphinx-rtd-theme", "sphinx-copybutton"]
|
||||||
|
|
||||||
|
[tool.poetry.dev-dependencies]
|
||||||
|
django-debug-toolbar = "^3.2.2"
|
||||||
|
ipython = "^7.28.0"
|
||||||
|
black = "^21.9b0"
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["poetry-core>=1.0.0"]
|
||||||
|
build-backend = "poetry.core.masonry.api"
|
@ -1,27 +0,0 @@
|
|||||||
# Django 1.11 LTS is required
|
|
||||||
Django >=2.2, <3.0
|
|
||||||
Pillow
|
|
||||||
mistune
|
|
||||||
django-jinja
|
|
||||||
pyopenssl
|
|
||||||
pytz
|
|
||||||
djangorestframework
|
|
||||||
django-phonenumber-field
|
|
||||||
phonenumbers
|
|
||||||
django-ajax-selects
|
|
||||||
reportlab
|
|
||||||
django-haystack
|
|
||||||
xapian-haystack
|
|
||||||
django-debug-toolbar
|
|
||||||
libsass
|
|
||||||
django-ordered-model
|
|
||||||
django-simple-captcha
|
|
||||||
python-dateutil
|
|
||||||
pygraphviz
|
|
||||||
sentry_sdk
|
|
||||||
# mysqlclient
|
|
||||||
|
|
||||||
# For documentation
|
|
||||||
Sphinx > 2.0
|
|
||||||
sphinx_rtd_theme
|
|
||||||
sphinx-copybutton
|
|
Loading…
Reference in New Issue
Block a user