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/ ...@@ -19,3 +19,6 @@ test/
*.sql *.sql
pg_to_sqlite.sh pg_to_sqlite.sh
local-templates/ local-templates/
_version.py
.idea/
.python-version
...@@ -19,25 +19,26 @@ System zur Verwaltung von Protokollen und Sitzungen. ...@@ -19,25 +19,26 @@ System zur Verwaltung von Protokollen und Sitzungen.
Required infrastructure: Required infrastructure:
* python >= 3.5 * python >= 3.9
* a pyproject.toml tool (suggested choice: uv)
* some WSGI-capable webserver (nginx + uwsgi, …) * some WSGI-capable webserver (nginx + uwsgi, …)
* some database (postgres, …) * some database (postgres, …)
* some LDAP server (Samba 4, slapd, …) for accounts and groups * 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, …) * some message broker for [celery](http://docs.celeryproject.org/en/latest/getting-started/brokers/) (redis, …)
Optional infrastructure: Optional infrastructure:
* texlive for rendering PDFs
* a mail server (for sending protocols and invitations) * a mail server (for sending protocols and invitations)
* a CUPS printing server (for printing protocols and decisions) * a CUPS printing server (for printing protocols and decisions)
* an [Etherpad](https://github.com/ether/etherpad-lite) (for writing the protocol collectively) * 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) * a CalDAV server (for uploading the events)
Steps: Steps:
1. clone the [repository](https://git.fsmpi.rwth-aachen.de/protokollsystem/proto3) 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 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) 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 * **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 #!/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