python3Packages.tmodbus: init at 0.4.1; python3Packages.modbus-connnection: init at 3.3.0 (#538840)

This commit is contained in:
Martin Weinelt
2026-07-08 16:29:11 +00:00
committed by GitHub
3 changed files with 184 additions and 0 deletions
@@ -0,0 +1,63 @@
{
buildPythonPackage,
fetchFromGitHub,
hatchling,
lib,
pymodbus,
pyprojectVersionPatchHook,
pytest-asyncio,
pytestCheckHook,
tmodbus,
}:
buildPythonPackage (finalAttrs: {
pname = "modbus-connection";
version = "3.3.0";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "home-assistant-libs";
repo = "modbus-connection";
tag = finalAttrs.version;
hash = "sha256-IEdOLd+BjX2b6bQS7hw33CyuDFVJ5dO0BaHLLhGp3LE=";
};
nativeBuildInputs = [
pyprojectVersionPatchHook
];
build-system = [
hatchling
];
optional-dependencies = {
pymodbus = [
pymodbus
]
++ pymodbus.optional-dependencies.serial;
tmodbus = [
tmodbus
]
++ tmodbus.optional-dependencies.async-serial
++ tmodbus.optional-dependencies.smart;
};
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
]
++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies;
pythonImportsCheck = [
"modbus_connection"
];
meta = {
description = "Small, backend-neutral Modbus connection abstraction";
homepage = "https://github.com/home-assistant-libs/modbus-connection";
changelog = "https://github.com/home-assistant-libs/modbus-connection/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ hexa ];
};
})
@@ -0,0 +1,117 @@
{
buildPythonPackage,
fetchFromGitHub,
hatchling,
hatch-vcs,
lib,
pytest-asyncio,
pytestCheckHook,
rustPlatform,
serialx,
socat,
tenacity,
}:
let
version = "0.4.1";
src = fetchFromGitHub {
owner = "wlcrs";
repo = "tmodbus";
tag = "v${version}";
hash = "sha256-pVP2QaCYkeeKhlEha7qIyNhbN1DfVyRxTSZBloEMXxc=";
};
rmodbus-server = rustPlatform.buildRustPackage (finalAttrs: {
pname = "rmodbus-server";
version = "0.1.0";
inherit src;
sourceRoot = "${src.name}/integration_tests/rmodbus";
cargoHash = "sha256-t7lJ7zC5+z1E/EDWTPR6cbGhcy/RmtXQXon+FiXRZlI=";
meta = {
description = "Rust Modbus server";
license = lib.licenses.bsd3;
mainProgram = "server";
};
});
tokio-modbus-server = rustPlatform.buildRustPackage (finalAttrs: {
pname = "tokio-modbus-server";
version = "0.1.0";
inherit src;
sourceRoot = "${src.name}/integration_tests/tokio";
cargoHash = "sha256-grYnQxf0CH7hkFq1zTMxw6brtHfCheh/O2EtPPPpVqA=";
meta = {
description = "Rust Tokio Modbus server";
license = lib.licenses.bsd3;
mainProgram = "tokio-server";
};
});
in
buildPythonPackage (finalAttrs: {
pname = "tmodbus";
inherit version src;
pyproject = true;
__structuredAttrs = true;
postPatch = ''
substituteInPlace \
integration_tests/tokio/test_tokio_client.py \
integration_tests/rmodbus/test_rmodbus_client.py \
--replace-fail "/usr/bin/socat" "${lib.getExe socat}"
mkdir -p integration_tests/{rmodbus,tokio}/target/release
ln -s ${lib.getExe' rmodbus-server "ascii-server"} integration_tests/rmodbus/target/release/
ln -s ${lib.getExe rmodbus-server} integration_tests/rmodbus/target/release/
ln -s ${lib.getExe tokio-modbus-server} integration_tests/tokio/target/release/
'';
build-system = [
hatch-vcs
hatchling
];
optional-dependencies = {
async-serial = [
serialx
];
smart = [
tenacity
];
};
nativeCheckInputs = [
pytest-asyncio
pytestCheckHook
]
++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies;
pythonImportsCheck = [
"tmodbus"
];
passthru = {
inherit rmodbus-server tokio-modbus-server;
};
meta = {
description = "Modern Python Modbus library";
homepage = "https://github.com/wlcrs/tmodbus";
changelog = "https://github.com/wlcrs/tmodbus/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ hexa ];
badPlatforms = [
"aarch64-darwin" # tests fail, no indication they should work
];
};
})
+4
View File
@@ -10687,6 +10687,8 @@ self: super: with self; {
modal = callPackage ../development/python-modules/modal { };
modbus-connection = callPackage ../development/python-modules/modbus-connection { };
modbus-tk = callPackage ../development/python-modules/modbus-tk { };
moddb = callPackage ../development/python-modules/moddb { };
@@ -20319,6 +20321,8 @@ self: super: with self; {
tmdbsimple = callPackage ../development/python-modules/tmdbsimple { };
tmodbus = callPackage ../development/python-modules/tmodbus { };
tnefparse = callPackage ../development/python-modules/tnefparse { };
todoist = callPackage ../development/python-modules/todoist { };