canaille: 0.0.74 -> 0.2.1 (#456442)

This commit is contained in:
Kerstin
2026-03-12 00:31:35 +00:00
committed by GitHub
12 changed files with 232 additions and 77 deletions
+2 -2
View File
@@ -40,7 +40,7 @@ let
++ old.optional-dependencies.otp
++ old.optional-dependencies.sms;
makeWrapperArgs = (old.makeWrapperArgs or [ ]) ++ [
"--set CONFIG /etc/canaille/config.toml"
"--set CANAILLE_CONFIG /etc/canaille/config.toml"
"--set SECRETS_DIR \"${secretsDir}\""
];
});
@@ -303,7 +303,7 @@ in
];
environment = {
PYTHONPATH = "${pythonEnv}/${python.sitePackages}/";
CONFIG = "/etc/canaille/config.toml";
CANAILLE_CONFIG = "/etc/canaille/config.toml";
SECRETS_DIR = secretsDir;
};
serviceConfig = commonServiceConfig // {
+41 -36
View File
@@ -2,9 +2,9 @@
lib,
python3,
fetchFromGitLab,
fetchpatch,
openldap,
nixosTests,
postgresql,
}:
let
@@ -12,55 +12,52 @@ let
in
python.pkgs.buildPythonApplication rec {
pname = "canaille";
version = "0.0.74";
version = "0.2.1";
pyproject = true;
src = fetchFromGitLab {
owner = "yaal";
repo = "canaille";
tag = version;
hash = "sha256-FL02ADM7rUU43XR71UWr4FLr/NeUau7zRwTMOSFm1T4=";
hash = "sha256-6Ksvl03HgpVQRhHtKWQwTrPBkaXcVWoejGaMFBAykHM=";
};
patches = [
# https://gitlab.com/yaal/canaille/-/merge_requests/275
(fetchpatch {
url = "https://gitlab.com/yaal/canaille/-/commit/1c7fc8b1034a4423f7f46ad8adeced854910b702.patch";
hash = "sha256-fu7D010NG7yUChOve7HY3e7mm2c/UGpfcTAiTU8BnGg=";
})
];
build-system = with python.pkgs; [
hatchling
babel
setuptools
];
dependencies =
with python.pkgs;
[
blinker
flask
flask-caching
flask-wtf
pydantic-settings
httpx
wtforms
]
++ sentry-sdk.optional-dependencies.flask;
dependencies = with python.pkgs; [
blinker
click
dramatiq
dramatiq-eager-broker
flask
flask-caching
flask-dramatiq
flask-session
flask-wtf
httpx
pydantic-settings
wtforms
];
nativeCheckInputs =
with python.pkgs;
[
pytestCheckHook
postgresql
coverage
flask-webtest
pyquery
pytest-cov-stub
pytest-httpserver
pytest-lazy-fixtures
pytest-postgresql
pytest-smtpd
pytest-xdist
python-avatars
scim2-tester
slapd
toml
@@ -68,13 +65,7 @@ python.pkgs.buildPythonApplication rec {
time-machine
pytest-scim2-server
]
++ optional-dependencies.front
++ optional-dependencies.oidc
++ optional-dependencies.scim
++ optional-dependencies.ldap
++ optional-dependencies.postgresql
++ optional-dependencies.otp
++ optional-dependencies.sms;
++ (lib.concatLists (builtins.attrValues optional-dependencies));
postInstall = ''
mkdir -p $out/etc/schema
@@ -87,17 +78,21 @@ python.pkgs.buildPythonApplication rec {
export SBIN="${openldap}/bin"
export SLAPD="${openldap}/libexec/slapd"
export SCHEMA="${openldap}/etc/schema"
# Just use their example config for testing
export CONFIG=tests/app/fixtures/default-config.toml
'';
disabledTests = [
# Tries to use DNS resolution
"test_send_new_email_error"
"test_send_test_email_ssl"
];
optional-dependencies = with python.pkgs; {
front = [
email-validator
flask-babel
flask-talisman
flask-themer
isodate
pycountry
pytz
tomlkit
@@ -108,10 +103,10 @@ python.pkgs.buildPythonApplication rec {
joserfc
];
scim = [
httpx
scim2-models
authlib
httpx
scim2-client
scim2-models
];
ldap = [ python-ldap ];
sentry = [ sentry-sdk ];
@@ -128,8 +123,18 @@ python.pkgs.buildPythonApplication rec {
pillow
qrcode
];
fido = [ webauthn ];
sms = [ smpplib ];
server = [ hypercorn ];
captcha = [ captcha ];
server = [
asgiref
hypercorn
isodate
pydanclick
tomlkit
];
redis = [ dramatiq ] ++ dramatiq.optional-dependencies.redis;
rabbitmq = [ dramatiq ] ++ dramatiq.optional-dependencies.rabbitmq;
};
passthru = {
@@ -0,0 +1,36 @@
{
lib,
buildPythonPackage,
fetchFromGitea,
uv-build,
dramatiq,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "dramatiq-eager-broker";
version = "0.3.0";
pyproject = true;
src = fetchFromGitea {
domain = "codeberg.org";
owner = "yaal";
repo = "dramatiq-eager-broker";
tag = version;
hash = "sha256-tz4Gy31y5oaTHFAzb5L7bg0AhG1U/JKDySGloA7/A/8=";
};
build-system = [ uv-build ];
dependencies = [ dramatiq ];
nativeCheckInputs = [ pytestCheckHook ];
meta = {
description = "An eager broker for Dramatiq that executes tasks synchronously and immediately, without queuing";
homepage = "https://codeberg.org/yaal/dramatiq-eager-broker";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.erictapen ];
};
}
@@ -38,6 +38,8 @@ buildPythonPackage {
build-system = [ poetry-core ];
pythonRelaxDeps = [ "dramatiq" ];
dependencies = [ dramatiq ];
nativeCheckInputs = [
@@ -29,6 +29,8 @@ buildPythonPackage rec {
--replace-fail 'poetry.masonry.api' 'poetry.core.masonry.api'
'';
pythonRelaxDeps = [ "dramatiq" ];
nativeBuildInputs = [ poetry-core ];
propagatedBuildInputs = [
@@ -0,0 +1,56 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
poetry-core,
pydantic,
pydantic-core,
click,
pytest7CheckHook,
pydantic-settings,
}:
buildPythonPackage rec {
pname = "pydanclick";
version = "0.5.1";
pyproject = true;
src = fetchFromGitHub {
owner = "felix-martel";
repo = "pydanclick";
tag = "v${version}";
hash = "sha256-Cgjq+9j6v7KILjfhK+4Y5joZPU2/ufJiIsdAfnSG9x4=";
};
build-system = [ poetry-core ];
dependencies = [
pydantic
pydantic-core
click
];
nativeCheckInputs = [
# Still uses RaisesContext from pytest 7
# https://github.com/felix-martel/pydanclick/issues/53
pytest7CheckHook
pydantic-settings
];
disabledTests = [
# No idea about these two failures
"test_complex_types_example_help"
"test_simple_example_with_invalid_args"
];
pythonImportsCheck = [ "pydanclick" ];
meta = {
description = "Add click options from a Pydantic model";
homepage = "https://github.com/felix-martel/pydanclick";
changelog = "https://github.com/felix-martel/pydanclick/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.erictapen ];
};
}
@@ -0,0 +1,35 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "python-avatars";
version = "1.4.1";
pyproject = true;
src = fetchFromGitHub {
owner = "ibonn";
repo = "python_avatars";
tag = "v${version}";
hash = "sha256-8/uhzOr0AukH0VgUhnsPNSEGJ2D5z1tqdIKzNHyHCgY=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "python_avatars" ];
meta = {
description = "Avatar generation package for Python";
homepage = "https://github.com/ibonn/python_avatars";
changelog = "https://github.com/ibonn/python_avatars/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.erictapen ];
};
}
@@ -1,8 +1,8 @@
{
lib,
buildPythonPackage,
fetchPypi,
hatchling,
fetchFromGitHub,
uv-build,
scim2-models,
pytestCheckHook,
portpicker,
@@ -16,17 +16,23 @@
buildPythonPackage rec {
pname = "scim2-client";
version = "0.6.1";
version = "0.7.3";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "scim2_client";
hash = "sha256-5XOUOKf0vYHkewY22x5NQdhICXCd+EftKhsxtQurgHQ=";
src = fetchFromGitHub {
owner = "python-scim";
repo = "scim2-client";
tag = version;
hash = "sha256-jw8Dp/PekM0JrgxRkN+A896O2twkSDxQpsGsljJFdB0=";
};
build-system = [ hatchling ];
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build'
'';
build-system = [ uv-build ];
dependencies = [ scim2-models ];
@@ -41,12 +47,6 @@ buildPythonPackage rec {
]
++ optional-dependencies.httpx;
# Werkzeug returns 500, didn't deem it worth it to investigate
disabledTests = [
"test_search_request"
"test_query_dont_check_request_payload"
];
pythonImportsCheck = [ "scim2_client" ];
optional-dependencies = {
@@ -9,7 +9,7 @@
buildPythonPackage (finalAttrs: {
pname = "scim2-models";
version = "0.5.1";
version = "0.6.4";
pyproject = true;
@@ -17,7 +17,7 @@ buildPythonPackage (finalAttrs: {
owner = "python-scim";
repo = "scim2-models";
tag = finalAttrs.version;
hash = "sha256-ahwHmWsM9IoK+yq0Qd0c2+kagMlXGi80/rAB4UQsf6U=";
hash = "sha256-MyKe1OeaYwqHCma/HEunNCJ49ssHM+pTtnM4XnDZBCE=";
};
postPatch = ''
@@ -1,8 +1,8 @@
{
lib,
buildPythonPackage,
fetchPypi,
hatchling,
fetchFromGitHub,
uv-build,
scim2-filter-parser,
scim2-models,
werkzeug,
@@ -13,17 +13,23 @@
buildPythonPackage rec {
pname = "scim2-server";
version = "0.1.7";
version = "0.1.8";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "scim2_server";
hash = "sha256-nMS6vjMZ/Lyu0kiVH+IlmxZsuu7McY7AZS/xamfZSlk=";
src = fetchFromGitHub {
owner = "python-scim";
repo = "scim2-server";
tag = version;
hash = "sha256-7st/8KI8xWDkeUiID6TUKFdc2U8uFWe+xDUFbe9w22M=";
};
build-system = [ hatchling ];
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build'
'';
build-system = [ uv-build ];
dependencies = [
scim2-filter-parser
@@ -1,38 +1,45 @@
{
lib,
buildPythonPackage,
fetchPypi,
hatchling,
pythonOlder,
fetchFromGitHub,
uv-build,
scim2-client,
scim2-models,
pytestCheckHook,
werkzeug,
scim2-server,
pytest-scim2-server,
pytest-httpserver,
cacert,
}:
buildPythonPackage rec {
pname = "scim2-tester";
version = "0.2.4";
version = "0.2.6";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "scim2_tester";
hash = "sha256-r67e3AnqhLWVmtOFDj3P2Baa2Ch3TjyHm3Ol8ZwXH/g=";
src = fetchFromGitHub {
owner = "python-scim";
repo = "scim2-tester";
tag = version;
hash = "sha256-PoaY3gPSm+J/C1ad81Dmn7zrbf00pies8CLmLdV+gus=";
};
build-system = [ hatchling ];
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build'
'';
dependencies = [ scim2-client ];
build-system = [ uv-build ];
dependencies = [
scim2-client
scim2-models
];
nativeCheckInputs = [
pytestCheckHook
werkzeug
scim2-server
pytest-scim2-server
pytest-httpserver
cacert
]
++ optional-dependencies.httpx;
+6
View File
@@ -4688,6 +4688,8 @@ self: super: with self; {
dramatiq-abort = callPackage ../development/python-modules/dramatiq-abort { };
dramatiq-eager-broker = callPackage ../development/python-modules/dramatiq-eager-broker { };
drawille = callPackage ../development/python-modules/drawille { };
drawilleplot = callPackage ../development/python-modules/drawilleplot { };
@@ -13504,6 +13506,8 @@ self: super: with self; {
pydal = callPackage ../development/python-modules/pydal { };
pydanclick = callPackage ../development/python-modules/pydanclick { };
pydanfossair = callPackage ../development/python-modules/pydanfossair { };
pydantic = callPackage ../development/python-modules/pydantic { };
@@ -15484,6 +15488,8 @@ self: super: with self; {
python-arango = callPackage ../development/python-modules/python-arango { };
python-avatars = callPackage ../development/python-modules/python-avatars { };
python-awair = callPackage ../development/python-modules/python-awair { };
python-axolotl = callPackage ../development/python-modules/python-axolotl { };