Skip to content
Snippets Groups Projects
Commit 1d7926a4 authored by Lars Beckers's avatar Lars Beckers
Browse files

Switch dependency mgmt to pyproject.toml

parent fcf29f2e
No related branches found
No related tags found
No related merge requests found
......@@ -19,3 +19,6 @@ test/
*.sql
pg_to_sqlite.sh
local-templates/
_version.py
.idea/
.python-version
......@@ -19,25 +19,26 @@ System zur Verwaltung von Protokollen und Sitzungen.
Required infrastructure:
* python >= 3.5
* python >= 3.9
* a pyproject.toml tool (suggested choice: uv)
* some WSGI-capable webserver (nginx + uwsgi, …)
* some database (postgres, …)
* some LDAP server (Samba 4, slapd, …) for accounts and groups
* texlive
* some message broker for [celery](http://docs.celeryproject.org/en/latest/getting-started/brokers/) (redis, …)
Optional infrastructure:
* texlive for rendering PDFs
* a mail server (for sending protocols and invitations)
* a CUPS printing server (for printing protocols and decisions)
* an [Etherpad](https://github.com/ether/etherpad-lite) (for writing the protocol collectively)
* a Mediawiki instance (for uploading the protocols there)
* a Mediawiki/Dokuwiki/GitLab instance (for uploading the protocols there)
* a CalDAV server (for uploading the events)
Steps:
1. clone the [repository](https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3)
2. create a python virtualenv and install the packages from `requirements.txt` there
2. run `uv sync`
3. create a database (tested with postgres and sqlite, but feel free to use whatever you like and [SQLAlchemy](http://docs.sqlalchemy.org/en/latest/dialects/index.html) supports
4. create `config.py` with `python configproxy.py create --filename config.py` and edit it (make sure that python version >= 3.5)
* **do** change everything that is not commented out
......
[project]
name = "proto3"
dynamic = ["version"]
description = "System zur Verwaltung von Protokollen und Sitzungen."
readme = "README.md"
license = "BSD-3-Clause"
license-files = ["LICENSE"]
requires-python = ">=3.9"
dependencies = [
"apscheduler==3.11.*",
"caldav==1.6.*",
"celery==5.5.*",
"etherpad-lite==0.5",
"feedgen==1.0.*",
"flask==2.2.*",
"flask-migrate==3.1",
"flask-sqlalchemy==3.0.*",
"flask-wtf==1.2.*",
"fuzzywuzzy[speedup]==0.18",
"icalendar==6.3.*",
"regex==2024.11.6",
"requests==2.28.*",
"sqlalchemy==2.0.*",
"sqlalchemy-utils==0.41.*",
"werkzeug<3.0.0",
"wtforms==3.2.*",
]
[project.urls]
Repository = "https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3"
[build-system]
requires = [
"hatchling==1.27.*",
"hatch-vcs==0.4.*",
]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["."]
[tool.hatch.version]
source = "vcs"
[tool.hatch.build.hooks.vcs]
version-file = "_version.py"
[project.scripts]
proto3 = "server:cli"
[project.optional-dependencies]
fsmpi = ["proto3[sentry,uwsgi,pam,ldap,postgres]"]
froscon = ["proto3[uwsgi,pam,ldap,postgres,gitlab]"]
gitlab = [
"python-gitlab==4.5.*",
]
sentry = [
"raven==6.10",
]
uwsgi = [
"uwsgidecorators==1.1",
]
pam = [
"python-pam==2.0.*",
]
ldap = [
"ldap3==2.9.*",
]
postgres = [
"psycopg2==2.9.*",
]
[dependency-groups]
dev = [
"bandit>=1.8.3",
"coverage>=7.9.1",
"flake8>=7.2.0",
"mccabe>=0.7.0",
"pycodestyle>=2.13.0",
"python-dotenv>=1.1.0",
"redis>=6.2.0",
"watchdog>=6.0.0",
]
alembic==1.8.1
amqp==5.1.1
appdirs==1.4.4
APScheduler==3.9.1
argh==0.26.2
async-timeout==4.0.2
bandit==1.7.4
billiard==3.6.4.0
blessed==1.19.1
blessings==1.7
blinker==1.5
bpython==0.23
caldav==0.10.0
celery==5.2.7
certifi==2022.9.24
chardet==5.0.0
charset-normalizer==2.1.1
click==8.1.3
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.2.0
colorama==0.4.6
coverage==6.5.0
curtsies==0.4.1
cwcwidth==0.1.8
Deprecated==1.2.13
dnspython==2.2.1
enum-compat==0.0.3
etherpad-lite==0.5
eventlet==0.33.1
feedgen==0.9.0
Flask==2.2.2
Flask-Migrate==3.1.0
Flask-SQLAlchemy==3.0.2
Flask-WTF==1.0.1
fuzzywuzzy==0.18.0
gitdb==4.0.9
gitdb2==4.0.2
GitPython==3.1.29
greenlet==1.1.3.post0
icalendar==5.0.1
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
kombu==5.2.4
ldap3==2.9.1
Levenshtein==0.20.7
lxml==4.9.1
Mako==1.2.3
mando==0.7.1
MarkupSafe==2.1.1
mccabe==0.7.0
monotonic==1.6
nose==1.3.7
packaging==21.3
pathtools==0.1.2
pbr==5.11.0
prompt-toolkit==3.0.31
psycopg2-binary==2.9.5
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.9.1
Pygments==2.13.0
pyldap==3.0.0.post1
pyparsing==3.0.9
python-dateutil==2.8.2
python-dotenv==0.21.0
python-editor==1.0.4
python-engineio==4.3.4
python-ldap==3.4.3
python-Levenshtein==0.20.7
python-pam==2.0.2
pytz==2022.5
pytz-deprecation-shim==0.1.0.post0
pyxdg==0.28
PyYAML==6.0
rapidfuzz==2.12.0
raven==6.10.0
redis==4.3.4
regex==2022.9.13
requests==2.28.1
six==1.16.0
smmap==5.0.0
smmap2==3.0.1
SQLAlchemy==1.4.42
SQLAlchemy-Utils==0.38.3
stevedore==4.1.0
typing==3.7.4.3
tzdata==2022.5
tzlocal==4.2
urllib3==1.26.12
uwsgidecorators==1.1.0
vine==5.0.0
vobject==0.9.6.1
watchdog==2.1.9
wcwidth==0.2.5
Werkzeug==2.2.2
wrapt==1.14.1
WTForms==3.0.1
#!/bin/bash
celery -A server.celery worker --loglevel=debug --concurrency=1
uv run celery -A server.celery worker --loglevel=debug --concurrency=1
uv.lock 0 → 100644
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment