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 optional-dependencies = {
42 speed = [
43 faust-cchardet
44 urllib3
45 ]
46 ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
47 ++ urllib3.optional-dependencies.brotli;
48 all = [
49 faust-cchardet
50 urllib3
51 ]
52 ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
53 ++ urllib3.optional-dependencies.brotli;
54 };
55
56 nativeCheckInputs = [ pytestCheckHook ];
57
58 disabledTests = [
59 # Tests that require an internet connection
60 "test_input"
61 "test_cli"
62 "test_download"
63 "test_readme_examples"
64 ];
65
66 pythonImportsCheck = [ "htmldate" ];
67
68 meta = with lib; {
69 description = "Module for the extraction of original and updated publication dates from URLs and web pages";
70 homepage = "https://htmldate.readthedocs.io";
71 changelog = "https://github.com/adbar/htmldate/blob/${src.tag}/CHANGELOG.md";
72 license = licenses.asl20;
73 maintainers = with maintainers; [ jokatzke ];
74 mainProgram = "htmldate";
75 };
76}