Thu, 31 Aug 2023 15:00:53 +0200
Third Party packages
- Upgraded pip-licenses to version 4.3.2.
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | #!/usr/bin/env python |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | # -*- coding: utf-8 -*- |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # vim:fenc=utf-8 ff=unix ft=python ts=4 sw=4 sts=4 si et |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | """ |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | pip-licenses |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | MIT License |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | Copyright (c) 2018 raimon |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | Permission is hereby granted, free of charge, to any person obtaining a copy |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | of this software and associated documentation files (the "Software"), to deal |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | in the Software without restriction, including without limitation the rights |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | copies of the Software, and to permit persons to whom the Software is |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | furnished to do so, subject to the following conditions: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | The above copyright notice and this permission notice shall be included in all |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | copies or substantial portions of the Software. |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | SOFTWARE. |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
29 | |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
30 | # |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
31 | # Modified to be used within the eric-ide project. |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
32 | # |
9653
e67609152c5e
Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9590
diff
changeset
|
33 | # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
34 | # |
9310 | 35 | # Modifications: |
36 | # - removed dependency to prettytable | |
37 | # - removed some not needed code | |
38 | # - changed 'create_licenses_table' to 'create_licenses_list' | |
39 | # - changed 'create_summary_table' to 'create_summary_list' | |
40 | # - changed 'create_output_string' to return a JSON string | |
41 | # | |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
42 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
43 | from __future__ import annotations |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
44 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | import argparse |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | import codecs |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
47 | import json |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
48 | import os |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
49 | import re |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
50 | import subprocess |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | import sys |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | from collections import Counter |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | from enum import Enum, auto |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
54 | from pathlib import Path |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
55 | from typing import TYPE_CHECKING, List, Type, cast |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
56 | |
9851
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
57 | # modified for 'eric-ide' for Python < 3.8 |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
58 | try: |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
59 | from importlib import metadata as importlib_metadata |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
60 | except ImportError: |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
61 | importlib_metadata = None |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
62 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
63 | if TYPE_CHECKING: |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
64 | from email.message import Message |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
65 | from typing import Callable, Dict, Iterator, Optional, Sequence |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
67 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
68 | __pkgname__ = "pip-licenses" |
10179
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
69 | __version__ = "4.3.2" |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
70 | __author__ = "raimon" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
71 | __license__ = "MIT" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
72 | __summary__ = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
73 | "Dump the software license list of Python packages installed with pip." |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
74 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
75 | __url__ = "https://github.com/raimon49/pip-licenses" |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | FIELD_NAMES = ( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | 'Name', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | 'Version', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | 'License', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | 'LicenseFile', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | 'LicenseText', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | 'NoticeFile', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | 'NoticeText', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | 'Author', |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
87 | "Maintainer", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | 'Description', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | 'URL', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
93 | SUMMARY_FIELD_NAMES = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
94 | "Count", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
95 | "License", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
96 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
97 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
98 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | DEFAULT_OUTPUT_FIELDS = ( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | 'Name', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | 'Version', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | SUMMARY_OUTPUT_FIELDS = ( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | 'Count', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | 'License', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
111 | def extract_homepage(metadata: Message) -> Optional[str]: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
112 | """Extracts the homepage attribute from the package metadata. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
113 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
114 | Not all python packages have defined a home-page attribute. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
115 | As a fallback, the `Project-URL` metadata can be used. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
116 | The python core metadata supports multiple (free text) values for |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
117 | the `Project-URL` field that are comma separated. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
118 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
119 | Args: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
120 | metadata: The package metadata to extract the homepage from. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
121 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
122 | Returns: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
123 | The home page if applicable, None otherwise. |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
124 | """ |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
125 | homepage = metadata.get("home-page", None) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
126 | if homepage is not None: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
127 | return homepage |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
128 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
129 | candidates: Dict[str, str] = {} |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
130 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
131 | for entry in metadata.get_all("Project-URL", []): |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
132 | key, value = entry.split(",", 1) |
10179
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
133 | candidates[key.strip().lower()] = value.strip() |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
134 | |
10179
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
135 | for priority_key in [ "homepage", |
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
136 | "source", |
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
137 | "repository", |
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
138 | "changelog", |
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
139 | "bug tracker", |
c2125fcab4b8
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10027
diff
changeset
|
140 | ]: |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
141 | if priority_key in candidates: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
142 | return candidates[priority_key] |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
143 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
144 | return None |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
145 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
146 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
147 | PATTERN_DELIMITER = re.compile(r"[-_.]+") |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
148 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
149 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
150 | def normalize_pkg_name(pkg_name: str) -> str: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
151 | """Return normalized name according to PEP specification |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
152 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
153 | See here: https://peps.python.org/pep-0503/#normalized-names |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
154 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
155 | Args: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
156 | pkg_name: Package name it is extracted from the package metadata |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
157 | or specified in the CLI |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
158 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
159 | Returns: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
160 | normalized packege name |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
161 | """ |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
162 | return PATTERN_DELIMITER.sub("-", pkg_name).lower() |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
163 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
164 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
165 | METADATA_KEYS: Dict[str, List[Callable[[Message], Optional[str]]]] = { |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
166 | "home-page": [extract_homepage], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
167 | "author": [ |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
168 | lambda metadata: metadata.get("author"), |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
169 | lambda metadata: metadata.get("author-email"), |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
170 | ], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
171 | "maintainer": [ |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
172 | lambda metadata: metadata.get("maintainer"), |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
173 | lambda metadata: metadata.get("maintainer-email"), |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
174 | ], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
175 | "license": [lambda metadata: metadata.get("license")], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
176 | "summary": [lambda metadata: metadata.get("summary")], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
177 | } |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | # Mapping of FIELD_NAMES to METADATA_KEYS where they differ by more than case |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | FIELDS_TO_METADATA_KEYS = { |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | 'URL': 'home-page', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | 'Description': 'summary', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | 'License-Metadata': 'license', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | 'License-Classifier': 'license_classifier', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | } |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | SYSTEM_PACKAGES = ( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | __pkgname__, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | 'pip', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | 'setuptools', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | 'wheel', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | LICENSE_UNKNOWN = 'UNKNOWN' |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
198 | def get_packages( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
199 | args: CustomNamespace, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
200 | ) -> Iterator[dict[str, str | list[str]]]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
201 | def get_pkg_included_file( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
202 | pkg, file_names_rgx: str |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
203 | ) -> tuple[str, str]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | """ |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | Attempt to find the package's included file on disk and return the |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | tuple (included_file_path, included_file_contents). |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | """ |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | included_file = LICENSE_UNKNOWN |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | included_text = LICENSE_UNKNOWN |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
210 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
211 | pkg_files = pkg.files or () |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
212 | pattern = re.compile(file_names_rgx) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
213 | matched_rel_paths = filter( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
214 | lambda file: pattern.match(file.name), pkg_files |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
215 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
216 | for rel_path in matched_rel_paths: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
217 | abs_path = Path(pkg.locate_file(rel_path)) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
218 | if not abs_path.is_file(): |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
219 | continue |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
220 | included_file = str(abs_path) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
221 | with open( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
222 | abs_path, encoding="utf-8", errors="backslashreplace" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
223 | ) as included_file_handle: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
224 | included_text = included_file_handle.read() |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
225 | break |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | return (included_file, included_text) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
228 | def get_pkg_info(pkg) -> dict[str, str | list[str]]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | (license_file, license_text) = get_pkg_included_file( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
230 | pkg, "LICEN[CS]E.*|COPYING.*" |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | ) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
232 | (notice_file, notice_text) = get_pkg_included_file(pkg, "NOTICE.*") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
233 | pkg_info: dict[str, str | list[str]] = { |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
234 | "name": pkg.metadata["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
235 | "version": pkg.version, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
236 | "namever": "{} {}".format(pkg.metadata["name"], pkg.version), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
237 | "licensefile": license_file, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
238 | "licensetext": license_text, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
239 | "noticefile": notice_file, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
240 | "noticetext": notice_text, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | } |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
242 | metadata = pkg.metadata |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
243 | for field_name, field_selector_fns in METADATA_KEYS.items(): |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
244 | value = None |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
245 | for field_selector_fn in field_selector_fns: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
246 | # Type hint of `Distribution.metadata` states `PackageMetadata` |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
247 | # but it's actually of type `email.Message` |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
248 | value = field_selector_fn(metadata) # type: ignore |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
249 | if value: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
250 | break |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
251 | pkg_info[field_name] = value or LICENSE_UNKNOWN |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
253 | classifiers: list[str] = metadata.get_all("classifier", []) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
254 | pkg_info["license_classifier"] = find_license_from_classifier( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
255 | classifiers |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
256 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | if args.filter_strings: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
259 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
260 | def filter_string(item: str) -> str: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
261 | return item.encode( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
262 | args.filter_code_page, errors="ignore" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
263 | ).decode(args.filter_code_page) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
264 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | for k in pkg_info: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | if isinstance(pkg_info[k], list): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
267 | pkg_info[k] = list(map(filter_string, pkg_info[k])) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
269 | pkg_info[k] = filter_string(cast(str, pkg_info[k])) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | return pkg_info |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
273 | def get_python_sys_path(executable: str) -> list[str]: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
274 | script = "import sys; print(' '.join(filter(bool, sys.path)))" |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
275 | output = subprocess.run( |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
276 | [executable, "-c", script], |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
277 | capture_output=True, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
278 | env={**os.environ, "PYTHONPATH": "", "VIRTUAL_ENV": ""}, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
279 | ) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
280 | return output.stdout.decode().strip().split() |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
281 | |
9851
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
282 | # modified for 'eric-ide' for Python < 3.8 |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
283 | if importlib_metadata is None: |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
284 | return [] |
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
285 | else: |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
286 | if args.python == sys.executable: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
287 | search_paths = sys.path |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
288 | else: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
289 | search_paths = get_python_sys_path(args.python) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
290 | pkgs = importlib_metadata.distributions(path=search_paths) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
291 | ignore_pkgs_as_normalize = [ |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
292 | normalize_pkg_name(pkg) for pkg in args.ignore_packages |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
293 | ] |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
294 | pkgs_as_normalize = [normalize_pkg_name(pkg) for pkg in args.packages] |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | fail_on_licenses = set() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | if args.fail_on: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | fail_on_licenses = set(map(str.strip, args.fail_on.split(";"))) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | allow_only_licenses = set() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | if args.allow_only: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | allow_only_licenses = set(map(str.strip, args.allow_only.split(";"))) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | for pkg in pkgs: |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
305 | pkg_name = normalize_pkg_name(pkg.metadata["name"]) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
306 | pkg_name_and_version = pkg_name + ":" + pkg.metadata["version"] |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
308 | if ( |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
309 | pkg_name.lower() in ignore_pkgs_as_normalize |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
310 | or pkg_name_and_version.lower() in ignore_pkgs_as_normalize |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
311 | ): |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | continue |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
314 | if pkgs_as_normalize and pkg_name.lower() not in pkgs_as_normalize: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | continue |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | if not args.with_system and pkg_name in SYSTEM_PACKAGES: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | continue |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | pkg_info = get_pkg_info(pkg) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | license_names = select_license_by_source( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | args.from_, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
324 | cast(List[str], pkg_info["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
325 | cast(str, pkg_info["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
326 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | if fail_on_licenses: |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
329 | failed_licenses = case_insensitive_set_intersect( |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
330 | license_names, fail_on_licenses |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
331 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | if failed_licenses: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | sys.stderr.write( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | "fail-on license {} was found for package " |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | "{}:{}".format( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
336 | "; ".join(sorted(failed_licenses)), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
337 | pkg_info["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
338 | pkg_info["version"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
339 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | sys.exit(1) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | if allow_only_licenses: |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
344 | uncommon_licenses = case_insensitive_set_diff( |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
345 | license_names, allow_only_licenses |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
346 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | if len(uncommon_licenses) == len(license_names): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | sys.stderr.write( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | "license {} not in allow-only licenses was found" |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | " for package {}:{}".format( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
351 | "; ".join(sorted(uncommon_licenses)), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
352 | pkg_info["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
353 | pkg_info["version"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
354 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | sys.exit(1) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | yield pkg_info |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | |
9851
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
361 | # modified for 'eric-ide' |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | def create_licenses_list( |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
363 | args: "CustomNamespace", output_fields=DEFAULT_OUTPUT_FIELDS): |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
364 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | licenses = [] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | for pkg in get_packages(args): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | row = {} |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | for field in output_fields: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | if field == 'License': |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | license_set = select_license_by_source( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
371 | args.from_, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
372 | cast(List[str], pkg["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
373 | cast(str, pkg["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
374 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
375 | license_str = "; ".join(sorted(license_set)) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | row[field] = license_str |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | elif field == 'License-Classifier': |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
378 | row[field] = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
379 | "; ".join(sorted(pkg["license_classifier"])) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
380 | or LICENSE_UNKNOWN |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
381 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | elif field.lower() in pkg: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
383 | row[field] = cast(str, pkg[field.lower()]) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
385 | row[field] = cast(str, pkg[FIELDS_TO_METADATA_KEYS[field]]) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | licenses.append(row) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | return licenses |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | |
9851
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
391 | # modified for 'eric-ide' |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
392 | def create_summary_list(args: "CustomNamespace"): |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393 | counts = Counter( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
394 | "; ".join( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
395 | sorted( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
396 | select_license_by_source( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
397 | args.from_, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
398 | cast(List[str], pkg["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
399 | cast(str, pkg["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
400 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
401 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
402 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
403 | for pkg in get_packages(args) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
404 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
406 | licenses = [] |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407 | for license, count in counts.items(): |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
408 | licenses.append({ |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
409 | "Count": count, |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
410 | "License": license, |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
411 | }) |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
412 | |
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
413 | return licenses |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
416 | def case_insensitive_set_intersect(set_a, set_b): |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
417 | """Same as set.intersection() but case-insensitive""" |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
418 | common_items = set() |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
419 | set_b_lower = {item.lower() for item in set_b} |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
420 | for elem in set_a: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
421 | if elem.lower() in set_b_lower: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
422 | common_items.add(elem) |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
423 | return common_items |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
424 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
425 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
426 | def case_insensitive_set_diff(set_a, set_b): |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
427 | """Same as set.difference() but case-insensitive""" |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
428 | uncommon_items = set() |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
429 | set_b_lower = {item.lower() for item in set_b} |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
430 | for elem in set_a: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
431 | if not elem.lower() in set_b_lower: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
432 | uncommon_items.add(elem) |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
433 | return uncommon_items |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
434 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
435 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
436 | def find_license_from_classifier(classifiers: list[str]) -> list[str]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
437 | licenses = [] |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
438 | for classifier in filter(lambda c: c.startswith("License"), classifiers): |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
439 | license = classifier.split(" :: ")[-1] |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
441 | # Through the declaration of 'Classifier: License :: OSI Approved' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
442 | if license != "OSI Approved": |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
443 | licenses.append(license) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | return licenses |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
448 | def select_license_by_source( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
449 | from_source: FromArg, license_classifier: list[str], license_meta: str |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
450 | ) -> set[str]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | license_classifier_set = set(license_classifier) or {LICENSE_UNKNOWN} |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
452 | if ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
453 | from_source == FromArg.CLASSIFIER |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
454 | or from_source == FromArg.MIXED |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
455 | and len(license_classifier) > 0 |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
456 | ): |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | return license_classifier_set |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | else: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | return {license_meta} |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
462 | def get_output_fields(args: CustomNamespace) -> list[str]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | if args.summary: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | return list(SUMMARY_OUTPUT_FIELDS) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | output_fields = list(DEFAULT_OUTPUT_FIELDS) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | if args.from_ == FromArg.ALL: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
469 | output_fields.append("License-Metadata") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
470 | output_fields.append("License-Classifier") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
472 | output_fields.append("License") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | if args.with_authors: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
475 | output_fields.append("Author") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
477 | if args.with_maintainers: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
478 | output_fields.append("Maintainer") |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
479 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | if args.with_urls: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
481 | output_fields.append("URL") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | if args.with_description: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
484 | output_fields.append("Description") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
486 | if args.no_version: |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
487 | output_fields.remove("Version") |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
488 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | if args.with_license_file: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | if not args.no_license_path: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
491 | output_fields.append("LicenseFile") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
493 | output_fields.append("LicenseText") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | if args.with_notice_file: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
496 | output_fields.append("NoticeText") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | if not args.no_license_path: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
498 | output_fields.append("NoticeFile") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | return output_fields |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | |
9851
ec12090e9cd9
Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9850
diff
changeset
|
503 | # modified for 'eric-ide' |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | def create_output_string(args: "CustomNamespace"): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | output_fields = get_output_fields(args) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | if args.summary: |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
508 | licenses = create_summary_list(args) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | else: |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
510 | licenses = create_licenses_list(args, output_fields) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
512 | return json.dumps(licenses) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | class CustomHelpFormatter(argparse.HelpFormatter): # pragma: no cover |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | def __init__( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
517 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
518 | prog: str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
519 | indent_increment: int = 2, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
520 | max_help_position: int = 24, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
521 | width: Optional[int] = None, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | ) -> None: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | max_help_position = 30 |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | super().__init__( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
525 | prog, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
526 | indent_increment=indent_increment, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
527 | max_help_position=max_help_position, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
528 | width=width, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
529 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | def _format_action(self, action: argparse.Action) -> str: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | flag_indent_argument: bool = False |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | text = self._expand_help(action) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
534 | separator_pos = text[:3].find("|") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
535 | if separator_pos != -1 and "I" in text[:separator_pos]: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | self._indent() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | flag_indent_argument = True |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | help_str = super()._format_action(action) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | if flag_indent_argument: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | self._dedent() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | return help_str |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | def _expand_help(self, action: argparse.Action) -> str: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | if isinstance(action.default, Enum): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | default_value = enum_key_to_value(action.default) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
546 | return cast(str, self._get_help_string(action)) % { |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
547 | "default": default_value |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
548 | } |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | return super()._expand_help(action) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
551 | def _split_lines(self, text: str, width: int) -> List[str]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
552 | separator_pos = text[:3].find("|") |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | if separator_pos != -1: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
554 | flag_splitlines: bool = "R" in text[:separator_pos] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
555 | text = text[separator_pos + 1:] # fmt: skip |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | if flag_splitlines: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | return text.splitlines() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | return super()._split_lines(text, width) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
559 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | class CustomNamespace(argparse.Namespace): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | from_: "FromArg" |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | order: "OrderArg" |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | summary: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | output_file: str |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | ignore_packages: List[str] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | packages: List[str] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | with_system: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | with_authors: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | with_urls: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | with_description: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | with_license_file: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | no_license_path: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574 | with_notice_file: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | filter_strings: bool |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | filter_code_page: str |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | fail_on: Optional[str] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | allow_only: Optional[str] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | class CompatibleArgumentParser(argparse.ArgumentParser): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
582 | def parse_args( # type: ignore[override] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
583 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
584 | args: None | Sequence[str] = None, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
585 | namespace: None | CustomNamespace = None, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
586 | ) -> CustomNamespace: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
587 | args_ = cast(CustomNamespace, super().parse_args(args, namespace)) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
588 | self._verify_args(args_) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
589 | return args_ |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
591 | def _verify_args(self, args: CustomNamespace) -> None: |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | if args.with_license_file is False and ( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
593 | args.no_license_path is True or args.with_notice_file is True |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
594 | ): |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | self.error( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | "'--no-license-path' and '--with-notice-file' require " |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
597 | "the '--with-license-file' option to be set" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
598 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
599 | if args.filter_strings is False and args.filter_code_page != "latin1": |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | self.error( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | "'--filter-code-page' requires the '--filter-strings' " |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
602 | "option to be set" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
603 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | try: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
605 | codecs.lookup(args.filter_code_page) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | except LookupError: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
607 | self.error( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | "invalid code page '%s' given for '--filter-code-page, " |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609 | "check https://docs.python.org/3/library/codecs.html" |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610 | "#standard-encodings for valid code pages" |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
611 | % args.filter_code_page |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
612 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615 | class NoValueEnum(Enum): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
616 | def __repr__(self): # pragma: no cover |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
617 | return '<%s.%s>' % (self.__class__.__name__, self.name) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
618 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
619 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
620 | class FromArg(NoValueEnum): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
621 | META = M = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622 | CLASSIFIER = C = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
623 | MIXED = MIX = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
624 | ALL = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
626 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
627 | class OrderArg(NoValueEnum): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
628 | COUNT = C = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
629 | LICENSE = L = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | NAME = N = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631 | AUTHOR = A = auto() |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
632 | MAINTAINER = M = auto() |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633 | URL = U = auto() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636 | def value_to_enum_key(value: str) -> str: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | return value.replace('-', '_').upper() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | def enum_key_to_value(enum_key: Enum) -> str: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | return enum_key.name.replace('_', '-').lower() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
644 | def choices_from_enum(enum_cls: Type[NoValueEnum]) -> List[str]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
645 | return [ |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
646 | key.replace("_", "-").lower() for key in enum_cls.__members__.keys() |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
647 | ] |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | MAP_DEST_TO_ENUM = { |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | 'from_': FromArg, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | 'order': OrderArg, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | } |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | class SelectAction(argparse.Action): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
657 | def __call__( # type: ignore[override] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
658 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
659 | parser: argparse.ArgumentParser, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | namespace: argparse.Namespace, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
661 | values: str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
662 | option_string: Optional[str] = None, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | ) -> None: |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | enum_cls = MAP_DEST_TO_ENUM[self.dest] |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | values = value_to_enum_key(values) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | setattr(namespace, self.dest, getattr(enum_cls, values)) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
668 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
669 | def create_parser(): |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670 | parser = CompatibleArgumentParser( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
671 | description=__summary__, formatter_class=CustomHelpFormatter |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
672 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674 | common_options = parser.add_argument_group('Common options') |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
675 | format_options = parser.add_argument_group('Format options') |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
676 | verify_options = parser.add_argument_group('Verify options') |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
677 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
678 | parser.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
679 | "-v", "--version", action="version", version="%(prog)s " + __version__ |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
680 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682 | common_options.add_argument( |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
683 | "--python", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
684 | type=str, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
685 | default=sys.executable, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
686 | metavar="PYTHON_EXEC", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
687 | help="R| path to python executable to search distributions from\n" |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
688 | "Package will be searched in the selected python's sys.path\n" |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
689 | "By default, will search packages for current env executable\n" |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
690 | "(default: sys.executable)", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
691 | ) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
692 | |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
693 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
694 | "--from", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
695 | dest="from_", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
696 | action=SelectAction, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
697 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
698 | default=FromArg.MIXED, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
699 | metavar="SOURCE", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700 | choices=choices_from_enum(FromArg), |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
701 | help="R|where to find license information\n" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
702 | '"meta", "classifier, "mixed", "all"\n' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
703 | "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
704 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
705 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
706 | "-o", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
707 | "--order", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
708 | action=SelectAction, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
709 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
710 | default=OrderArg.NAME, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
711 | metavar="COL", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712 | choices=choices_from_enum(OrderArg), |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
713 | help="R|order by column\n" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
714 | '"name", "license", "author", "url"\n' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
715 | "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
716 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717 | common_options.add_argument( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
718 | '--summary', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
719 | action='store_true', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720 | default=False, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721 | help='dump summary of each license') |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722 | common_options.add_argument( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | '--output-file', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | action='store', type=str, |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | help='save license list to file') |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
727 | "-i", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
728 | "--ignore-packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
729 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
730 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
731 | nargs="+", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
732 | metavar="PKG", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
733 | default=[], |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
734 | help="ignore package name in dumped list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
735 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
736 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
737 | "-p", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
738 | "--packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
739 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
740 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
741 | nargs="+", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
742 | metavar="PKG", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
743 | default=[], |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
744 | help="only include selected packages in output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
745 | ) |
9003
6bc210cd5726
Finished implementing the basic functionality of a license lister for pip installed packages (based on pip-licenses).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9002
diff
changeset
|
746 | |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
748 | "-s", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
749 | "--with-system", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
750 | action="store_true", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
752 | help="dump with system packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
753 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
755 | "-a", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
756 | "--with-authors", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
757 | action="store_true", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
759 | help="dump with package authors", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
760 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761 | format_options.add_argument( |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
762 | "--with-maintainers", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
763 | action="store_true", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
764 | default=False, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
765 | help="dump with package maintainers", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
766 | ) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
767 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
768 | "-u", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
769 | "--with-urls", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
770 | action="store_true", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
771 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
772 | help="dump with package urls", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
773 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
774 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
775 | "-d", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
776 | "--with-description", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
777 | action="store_true", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
779 | help="dump with short package description", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
780 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | format_options.add_argument( |
10027
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
782 | "-nv", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
783 | "--no-version", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
784 | action="store_true", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
785 | default=False, |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
786 | help="dump without package version", |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
787 | ) |
63728909f3ff
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9851
diff
changeset
|
788 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
789 | "-l", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
790 | "--with-license-file", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
791 | action="store_true", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
793 | help="dump with location of license file and " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
794 | "contents, most useful with JSON output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
795 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
796 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
797 | "--no-license-path", |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
798 | action="store_true", |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
799 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
800 | help="I|when specified together with option -l, " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
801 | "suppress location of license file output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
802 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
803 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
804 | "--with-notice-file", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
805 | action="store_true", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
806 | default=False, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
807 | help="I|when specified together with option -l, " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
808 | "dump with location of license file and contents", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
809 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
810 | format_options.add_argument( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
811 | "--filter-strings", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
812 | action="store_true", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
813 | default=False, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
814 | help="filter input according to code page", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
815 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
816 | format_options.add_argument( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
817 | "--filter-code-page", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
818 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
819 | type=str, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
820 | default="latin1", |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
821 | metavar="CODE", |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
822 | help="I|specify code page for filtering " "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
823 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
824 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
825 | verify_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
826 | "--fail-on", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
827 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
828 | type=str, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
829 | default=None, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
830 | help="fail (exit with code 1) on the first occurrence " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
831 | "of the licenses of the semicolon-separated list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
832 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
833 | verify_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
834 | "--allow-only", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
835 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
836 | type=str, |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
837 | default=None, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
838 | help="fail (exit with code 1) on the first occurrence " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
839 | "of the licenses not in the semicolon-separated list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
840 | ) |
9002
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
841 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
842 | return parser |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
843 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
844 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
845 | def main(): # pragma: no cover |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
846 | parser = create_parser() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
847 | args = parser.parse_args() |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
848 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
849 | output_string = create_output_string(args) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
850 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
851 | print(output_string) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
852 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
853 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
854 | if __name__ == '__main__': # pragma: no cover |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
855 | main() |