1{ lib
2, buildPythonPackage
3, pythonOlder
4, fetchPypi
5, click
6, click-default-group
7, docformatter
8, jinja2
9, toposort
10, typing-extensions
11, lxml
12, requests
13, pytestCheckHook
14, setuptools
15, wheel
16}:
17
18buildPythonPackage rec {
19 pname = "xsdata";
20 version = "23.8";
21 format = "pyproject";
22
23 disabled = pythonOlder "3.8";
24
25 src = fetchPypi {
26 inherit pname version;
27 hash = "sha256-VfA9TIgjbwRyZq/+VQug3RlHat/OagHz4K76x8gHjlY=";
28 };
29
30 postPatch = ''
31 substituteInPlace pyproject.toml \
32 --replace "--benchmark-skip" ""
33 '';
34
35 nativeBuildInputs = [
36 setuptools
37 wheel
38 ];
39
40 propagatedBuildInputs = [
41 typing-extensions
42 ];
43
44 passthru.optional-dependencies = {
45 cli = [
46 click
47 click-default-group
48 docformatter
49 jinja2
50 toposort
51 ];
52 lxml = [
53 lxml
54 ];
55 soap = [
56 requests
57 ];
58 };
59
60 nativeCheckInputs = [
61 pytestCheckHook
62 ] ++ passthru.optional-dependencies.cli
63 ++ passthru.optional-dependencies.lxml
64 ++ passthru.optional-dependencies.soap;
65
66 disabledTestPaths = [
67 "tests/integration/benchmarks"
68 ];
69
70 pythonImportsCheck = [
71 "xsdata.formats.dataclass.context"
72 "xsdata.formats.dataclass.models.elements"
73 "xsdata.formats.dataclass.models.generics"
74 "xsdata.formats.dataclass.parsers"
75 "xsdata.formats.dataclass.parsers.handlers"
76 "xsdata.formats.dataclass.parsers.nodes"
77 "xsdata.formats.dataclass.serializers"
78 "xsdata.formats.dataclass.serializers.config"
79 "xsdata.formats.dataclass.serializers.mixins"
80 "xsdata.formats.dataclass.serializers.writers"
81 "xsdata.models.config"
82 "xsdata.utils.text"
83 ];
84
85 meta = {
86 description = "Python XML Binding";
87 homepage = "https://github.com/tefra/xsdata";
88 changelog = "https://github.com/tefra/xsdata/blob/v${version}/CHANGES.rst";
89 license = lib.licenses.mit;
90 maintainers = with lib.maintainers; [ dotlambda ];
91 };
92}