Path to Python/FastAPI
At some point, a porting of PHP aurweb to Python was proposed on the aur-dev mailing list. In May 2020 it was accepted as a milestone (reference: https://lists.archlinux.org/pipermail/aur-dev/2020-May/004848.html). The HTTP framework of choice in the conversation settled on FastAPI along with the popular database management library, SQLAlchemy and Alembic to manage its migrations.
This effort has been started and its beginnings now exist in the pu branch.
This issue should be updated with information that reflects the current state of the port whenever a commit is added which affects Python/FastAPI. Edits will be managed by project maintainers after merges or cherry-picks.
State of Development
In this section, we will cover infrastructural changes, while tasks will have their own sections beneath this.
- 
pytesthas been added to the project
- Docker runs a build and test + coverage report of aurweb
- Code coverage is now required to pass GitLab CI tests
- 
FastAPIhas been added to the project
- 
SQLAlchemyhas been added to the project- With the addition of SQLAlchemy ORM
 
- 
Alembichas been added to the project- Initial SSO migrations are now run on aurweb.initdb
 
- Initial SSO migrations are now run on 
- 
hypercornhas replaceduvicornfor a production ASGI server- 
hypercornsupports HTTP/2, whileuvicorndoes not
 
- 
Route Porting Tasks
Any "completed" tasks which are not yet merged into pu should specify the branch that it lies in. All completed tasks with no specified branch is assumed to be merged into pu. Example of a completed, unmerged task: [x] blah.php - kevr/aurweb branch: not_merged_branch. On the other hand, an example of a completed, merged into pu task would simply be [x] blah.php.
- 
404.php 
- 
503.php 
- 
account.php 
- 
addvote.php 
- 
comaintainers.php 
- 
commentedit.php 
- 
home.php 
- 
index.php 
- 
login.php 
- 
logout.php 
- 
packages.php 
- 
passreset.php 
- 
pkgbase.php 
- 
pkgdel.php 
- 
pkgdisown.php 
- 
pkgflagcomment.php 
- 
pkgflag.php 
- 
pkgmerge.php 
- 
pkgreq.php 
- 
register.php 
- 
rpc.php - in progress, but big task - [multi]infodone,suggest-pkgbasedone
- 
rss.php 
- 
modified-rss.php 
- 
tos.php 
- 
tu.php 
- 
voters.php 
NOTE: Issues should be created for all of these route tasks. To start off with, we'll prioritize creating issues for the more dependent tasks on the road to have one for each of them (or grouped, if sensible).