mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-03 14:31:15 +00:00
Using poetry as a dependency system for development
This commit is contained in:
parent
bfa3b45547
commit
85623f48a9
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
|
||||
*__pycache__*
|
||||
.DS_Store
|
||||
pyrightconfig.json
|
||||
poetry.lock
|
||||
dist/
|
||||
.vscode/
|
||||
env/
|
||||
doc/html
|
||||
|
@ -6,20 +6,14 @@ test:
|
||||
script:
|
||||
- env
|
||||
- apt-get update
|
||||
- apt-get install -y gettext python3-xapian libgraphviz-dev
|
||||
- pushd /usr/lib/python3/dist-packages/xapian && ln -s _xapian* _xapian.so && popd
|
||||
- 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
|
||||
- apt-get install -y gettext libxapian-dev libgraphviz-dev
|
||||
- pip install .[testing]
|
||||
- mkdir -p /dev/shm/search_indexes
|
||||
- ln -s /dev/shm/search_indexes sith/search_indexes
|
||||
- ./manage.py compilemessages
|
||||
- coverage run ./manage.py test
|
||||
- coverage html
|
||||
- coverage report
|
||||
- cd doc
|
||||
- make html # Make documentation
|
||||
variables:
|
||||
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip_tests"
|
||||
cache:
|
||||
|
2
.mailmap
2
.mailmap
@ -8,7 +8,7 @@ Och <francescowitz68@gmail.com>
|
||||
Partoo <joqaste@gmail.com>
|
||||
Skia <skia@hya.sk> <lordbanana25@mailoo.org>
|
||||
Skia <skia@hya.sk> <skia@libskia.so>
|
||||
Sli <klmp200@klmp200.net>
|
||||
Sli <klmp200@klmp200.net> <antoine@bartuccio.fr>
|
||||
Soldat <ryan-68@live.fr>
|
||||
Terre <jbaptiste.lenglet+git@gmail.com>
|
||||
Vial <robin.trioux@utbm.fr>
|
||||
|
@ -4,6 +4,11 @@
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Allow installing xapian-bindings in pip
|
||||
build:
|
||||
apt_packages:
|
||||
- libxapian-dev
|
||||
|
||||
# Build documentation in the doc/ directory with Sphinx
|
||||
sphinx:
|
||||
configuration: doc/conf.py
|
||||
@ -13,6 +18,9 @@ formats: all
|
||||
|
||||
# Optionally set the version of Python and requirements required to build your docs
|
||||
python:
|
||||
version: 3.6
|
||||
version: 3.8
|
||||
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.
|
||||
|
||||
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
|
||||
~~~~~
|
||||
|
@ -22,7 +22,7 @@ VsCode
|
||||
|
||||
.. 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 :
|
||||
|
||||
|
@ -6,11 +6,11 @@ Dépendances du système
|
||||
|
||||
Certaines dépendances sont nécessaires niveau système :
|
||||
|
||||
* virtualenv
|
||||
* poetry
|
||||
* libmysqlclient
|
||||
* libssl
|
||||
* libjpeg
|
||||
* python3-xapian
|
||||
* libxapian-dev
|
||||
* zlib1g-dev
|
||||
* python3
|
||||
* gettext
|
||||
@ -22,8 +22,11 @@ Sur Ubuntu
|
||||
|
||||
.. 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 pip3 install virtualenv
|
||||
sudo apt install libssl-dev libjpeg-dev zlib1g-dev python3-dev libffi-dev python3-dev libgraphviz-dev pkg-config libxapian-dev gettext git
|
||||
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
|
||||
~~~~~~~~~
|
||||
@ -32,7 +35,7 @@ Pour installer les dépendances, il est fortement recommandé d'installer le ges
|
||||
|
||||
.. 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
|
||||
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
|
||||
brew link gettext # (suivez bien les instructions supplémentaires affichées)
|
||||
|
||||
# Pour installer virtualenv
|
||||
pip3 install virtualenv
|
||||
# Pour installer poetry
|
||||
pip3 install poetry
|
||||
|
||||
.. note::
|
||||
|
||||
@ -56,15 +59,11 @@ Installer le projet
|
||||
git clone https://ae-dev.utbm.fr/ae/Sith.git
|
||||
cd Sith
|
||||
|
||||
# Prépare et active l'environnement du projet
|
||||
virtualenv --system-site-packages --python=python3 env
|
||||
source env/bin/activate
|
||||
# Création de l'environnement et installation des dépendances
|
||||
poetry install
|
||||
|
||||
# Installe les dépendances du projet
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 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/"
|
||||
# Activation de l'environnement virtuel
|
||||
poetry shell
|
||||
|
||||
# Prépare la base de donnée
|
||||
./manage.py setup
|
||||
@ -74,7 +73,7 @@ Installer le projet
|
||||
|
||||
.. 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
|
||||
-----------------------------------
|
||||
|
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