1{
2 lib,
3 backports-datetime-fromisoformat,
4 buildPythonPackage,
5 charset-normalizer,
6 dateparser,
7 faust-cchardet,
8 fetchFromGitHub,
9 lxml,
10 pytestCheckHook,
11 python-dateutil,
12 pythonOlder,
13 setuptools,
14 urllib3,
15}:
16
17buildPythonPackage rec {
18 pname = "htmldate";
19 version = "1.9.3";
20 pyproject = true;
21
22 disabled = pythonOlder "3.8";
23
24 src = fetchFromGitHub {
25 owner = "adbar";
26 repo = "htmldate";
27 tag = "v${version}";
28 hash = "sha256-9uFf/sx0AZdlvizU65H87hbtwDKf8Ykm67bKM9Oq//s=";
29 };
30
31 build-system = [ setuptools ];
32
33 dependencies = [
34 charset-normalizer
35 dateparser
36 lxml
37 python-dateutil
38 urllib3
39 ];
40
41 pythonRelaxDeps = [ "lxml" ];
42
43 optional-dependencies = {
44 speed = [
45 faust-cchardet
46 urllib3
47 ]
48 ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
49 ++ urllib3.optional-dependencies.brotli;
50 all = [
51 faust-cchardet
52 urllib3
53 ]
54 ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
55 ++ urllib3.optional-dependencies.brotli;
56 };
57
58 nativeCheckInputs = [ pytestCheckHook ];
59
60 disabledTests = [
61 # Tests that require an internet connection
62 "test_input"
63 "test_cli"
64 "test_download"
65 "test_readme_examples"
66 ];
67
68 pythonImportsCheck = [ "htmldate" ];
69
70 meta = with lib; {
71 description = "Module for the extraction of original and updated publication dates from URLs and web pages";
72 homepage = "https://htmldate.readthedocs.io";
73 changelog = "https://github.com/adbar/htmldate/blob/${src.tag}/CHANGELOG.md";
74 license = licenses.asl20;
75 maintainers = with maintainers; [ jokatzke ];
76 mainProgram = "htmldate";
77 };
78}