From 61c8fa73ae00689e299d4d381e891d31b55b04c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Thu, 7 Nov 2024 13:23:25 +0100 Subject: [PATCH] chore: split the 'sql' package extra in 'sqlite', 'postgresql' and 'mysql'. --- CHANGES.rst | 1 + doc/tutorial/install.rst | 6 ++-- pyproject.toml | 16 +++++++++- uv.lock | 65 ++++++++++++++++++++++++++++++++++++---- 4 files changed, 80 insertions(+), 8 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index c8cb18cc..b6a2168e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -17,6 +17,7 @@ Changed ^^^^^^^ - Update to HTMX 2.0.3 :pr:`184` - Migrate from poetry to uv :pr:`187` +- The ``sql`` package extra is now split between ``sqlite``, ``postgresql`` and ``mysql``. Removed ^^^^^^^ diff --git a/doc/tutorial/install.rst b/doc/tutorial/install.rst index 1d898a81..13f4efaf 100644 --- a/doc/tutorial/install.rst +++ b/doc/tutorial/install.rst @@ -28,7 +28,9 @@ Canaille provides different package options: - `front` provides all the things needed to produce the user interface; - `oidc` provides the dependencies to perform OAuth2/OIDC authentication; - `ldap` provides the dependencies to enable the LDAP backend; -- `sql` provides the dependencies to enable the Postgresql or Mysql backends; +- `sqlite` provides the dependencies to enable the SQLite backend; +- `postgresql` provides the dependencies to enable the PostgreSQL backend; +- `mysql` provides the dependencies to enable the MySQL backend; - `sentry` provides sentry integration to watch Canaille exceptions; - `all` provides all the extras above. @@ -36,7 +38,7 @@ They can be installed with: .. code-block:: bash - pip install "canaille[front,oidc,sql]" + pip install "canaille[front,oidc,postgresql]" Configure ========= diff --git a/pyproject.toml b/pyproject.toml index 4186c737..23604403 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,13 +62,27 @@ sentry = [ "sentry-sdk >= 2.0.0", ] -sql = [ +sqlite = [ "passlib >= 1.7.4", "sqlalchemy >= 2.0.23", "sqlalchemy-json >= 0.7.0", "sqlalchemy-utils >= 0.41.1", ] +postgresql = [ + "passlib >= 1.7.4", + "sqlalchemy[postgresql] >= 2.0.23", + "sqlalchemy-json >= 0.7.0", + "sqlalchemy-utils >= 0.41.1", +] + +mysql = [ + "passlib >= 1.7.4", + "sqlalchemy[mysql] >= 2.0.23", + "sqlalchemy-json >= 0.7.0", + "sqlalchemy-utils >= 0.41.1", +] + [project.urls] homepage = "https://canaille.yaal.coop" documentation = "https://canaille.readthedocs.io/en/latest/" diff --git a/uv.lock b/uv.lock index 3a8b9d00..4c8cff55 100644 --- a/uv.lock +++ b/uv.lock @@ -143,13 +143,25 @@ front = [ ldap = [ { name = "python-ldap" }, ] +mysql = [ + { name = "passlib" }, + { name = "sqlalchemy", extra = ["mysql"] }, + { name = "sqlalchemy-json" }, + { name = "sqlalchemy-utils" }, +] oidc = [ { name = "authlib" }, ] +postgresql = [ + { name = "passlib" }, + { name = "sqlalchemy", extra = ["postgresql"] }, + { name = "sqlalchemy-json" }, + { name = "sqlalchemy-utils" }, +] sentry = [ { name = "sentry-sdk" }, ] -sql = [ +sqlite = [ { name = "passlib" }, { name = "sqlalchemy" }, { name = "sqlalchemy-json" }, @@ -201,15 +213,23 @@ requires-dist = [ { name = "flask-babel", marker = "extra == 'front'", specifier = ">=4.0.0" }, { name = "flask-themer", marker = "extra == 'front'", specifier = ">=2.0.0" }, { name = "flask-wtf", specifier = ">=1.2.1" }, - { name = "passlib", marker = "extra == 'sql'", specifier = ">=1.7.4" }, + { name = "passlib", marker = "extra == 'mysql'", specifier = ">=1.7.4" }, + { name = "passlib", marker = "extra == 'postgresql'", specifier = ">=1.7.4" }, + { name = "passlib", marker = "extra == 'sqlite'", specifier = ">=1.7.4" }, { name = "pycountry", marker = "extra == 'front'", specifier = ">=23.12.7" }, { name = "pydantic-settings", specifier = ">=2.0.3" }, { name = "python-ldap", marker = "extra == 'ldap'", specifier = ">=3.4.0" }, { name = "pytz", marker = "extra == 'front'", specifier = ">=2022.7" }, { name = "sentry-sdk", marker = "extra == 'sentry'", specifier = ">=2.0.0" }, - { name = "sqlalchemy", marker = "extra == 'sql'", specifier = ">=2.0.23" }, - { name = "sqlalchemy-json", marker = "extra == 'sql'", specifier = ">=0.7.0" }, - { name = "sqlalchemy-utils", marker = "extra == 'sql'", specifier = ">=0.41.1" }, + { name = "sqlalchemy", marker = "extra == 'sqlite'", specifier = ">=2.0.23" }, + { name = "sqlalchemy", extras = ["mysql"], marker = "extra == 'mysql'", specifier = ">=2.0.23" }, + { name = "sqlalchemy", extras = ["postgresql"], marker = "extra == 'postgresql'", specifier = ">=2.0.23" }, + { name = "sqlalchemy-json", marker = "extra == 'mysql'", specifier = ">=0.7.0" }, + { name = "sqlalchemy-json", marker = "extra == 'postgresql'", specifier = ">=0.7.0" }, + { name = "sqlalchemy-json", marker = "extra == 'sqlite'", specifier = ">=0.7.0" }, + { name = "sqlalchemy-utils", marker = "extra == 'mysql'", specifier = ">=0.41.1" }, + { name = "sqlalchemy-utils", marker = "extra == 'postgresql'", specifier = ">=0.41.1" }, + { name = "sqlalchemy-utils", marker = "extra == 'sqlite'", specifier = ">=0.41.1" }, { name = "toml", marker = "extra == 'front'", specifier = ">=0.10.0" }, { name = "wtforms", specifier = ">=3.1.1" }, { name = "zxcvbn-rs-py", marker = "python_full_version < '3.13' and extra == 'front'", specifier = ">=0.1.1" }, @@ -952,6 +972,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] +[[package]] +name = "mysqlclient" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/95/1af2ee813d4f0b607082c18bb82aa05c98a95a402a1d2d5808999317cb16/mysqlclient-2.2.5.tar.gz", hash = "sha256:add8643c32f738014d252d2bdebb478623b04802e8396d5903905db36474d3ff", size = 90519 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/78/5dc4d98b998e957968aa8ad807a6ca7f751ef79ce462da11156317d7ca08/mysqlclient-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78438314199504c64f69e1e3521f2c9b419f19fcd85158b44c997b64409a6af", size = 207205 }, + { url = "https://files.pythonhosted.org/packages/9a/12/0e10b29d0a880e0d2482fe93d502d537bddf647f1a35468c8b98bb517c91/mysqlclient-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b54511648c1455b43ac28f8b4c1f732c5b0c343e87f7a3bd6fc9f9fe0f91934e", size = 207207 }, + { url = "https://files.pythonhosted.org/packages/8b/96/962f16047ed35ee8c91c10c26a98057194242f6c8da3b78238909a8014fe/mysqlclient-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:e871ede4261d0d42b8ed20a2459db411c7deafedd8e77b7e4ba760be4a6a752b", size = 207349 }, + { url = "https://files.pythonhosted.org/packages/62/f9/4a43f9fde92eb463bdb08643c4a143751be2b68cd9ad0582d7ee80836ddc/mysqlclient-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:8012c633aab8c91ea8172ac479807135b171501b9cad1a7cd9b58c4dc8dcdab5", size = 207343 }, + { url = "https://files.pythonhosted.org/packages/be/17/cd1b80247f76968c1c5a643843c69c640a8548f4f5e131be6b10d4436def/mysqlclient-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1d2e2ca0fe8405d8d6464edd01bf059951279e4bc27284d39341bd4737b2bc64", size = 207267 }, +] + [[package]] name = "nodeenv" version = "1.9.1" @@ -1053,6 +1086,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/11/91/87fa6f060e649b1e1a7b19a4f5869709fbf750b7c8c262ee776ec32f3028/psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be", size = 254228 }, ] +[[package]] +name = "psycopg2" +version = "2.9.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/51/2007ea29e605957a17ac6357115d0c1a1b60c8c984951c19419b3474cdfd/psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11", size = 385672 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/a9/146b6bdc0d33539a359f5e134ee6dda9173fb8121c5b96af33fa299e50c4/psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716", size = 1024527 }, + { url = "https://files.pythonhosted.org/packages/47/50/c509e56f725fd2572b59b69bd964edaf064deebf1c896b2452f6b46fdfb3/psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a", size = 1163735 }, + { url = "https://files.pythonhosted.org/packages/20/a2/c51ca3e667c34e7852157b665e3d49418e68182081060231d514dd823225/psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2", size = 1024538 }, + { url = "https://files.pythonhosted.org/packages/33/39/5a9a229bb5414abeb86e33b8fc8143ab0aecce5a7f698a53e31367d30caa/psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4", size = 1163736 }, + { url = "https://files.pythonhosted.org/packages/3d/16/4623fad6076448df21c1a870c93a9774ad8a7b4dd1660223b59082dd8fec/psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067", size = 1025113 }, + { url = "https://files.pythonhosted.org/packages/66/de/baed128ae0fc07460d9399d82e631ea31a1f171c0c4ae18f9808ac6759e3/psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e", size = 1163951 }, +] + [[package]] name = "pyasn1" version = "0.6.1" @@ -1650,6 +1697,14 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b8/49/21633706dd6feb14cd3f7935fc00b60870ea057686035e1a99ae6d9d9d53/SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e", size = 1883787 }, ] +[package.optional-dependencies] +mysql = [ + { name = "mysqlclient" }, +] +postgresql = [ + { name = "psycopg2" }, +] + [[package]] name = "sqlalchemy-json" version = "0.7.0"