Sun, 05 Mar 2023 12:26:12 +0100
Third Party packages
- Upgraded eradicate to version 2.2.0.
- Upgraded pipdeptree to version 2.5.2.
- Upgraded pip-licenses to version 4.1.0.
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 | # - added 'create_summary_by_license_list' together with the | |
41 | # '--summary-by-license' switch to count each individual | |
42 | # license used | |
43 | # - changed 'create_output_string' to return a JSON string | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
44 | # - added 'get_installed_distributions' to get the distributions |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
45 | # via pip in order to filter for 'local only' and/or 'user only' |
9310 | 46 | # |
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 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
48 | from __future__ import annotations |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
49 | |
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
|
50 | 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
|
51 | 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
|
52 | import json |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
53 | import re |
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
|
54 | 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
|
55 | 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
|
56 | from enum import Enum, auto |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
57 | from pathlib import Path |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
58 | from typing import TYPE_CHECKING, List, Type, cast |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
59 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
60 | if TYPE_CHECKING: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
61 | from typing import 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
|
62 | |
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
|
63 | |
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
|
64 | def get_installed_distributions(local_only=True, user_only=False): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
65 | """ |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
66 | Function to get the installed packages via pip. |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
67 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
68 | Note: importlib_metadata.distributions() does not respect |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
69 | 'local_only' and 'user_only' keyword parameters. |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
70 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
71 | @param local_only DESCRIPTION (defaults to True) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
72 | @type TYPE (optional) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
73 | @param user_only DESCRIPTION (defaults to False) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
74 | @type TYPE (optional) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
75 | @return DESCRIPTION |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
76 | @rtype TYPE |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
77 | """ |
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
|
78 | try: |
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
|
79 | from pip._internal.metadata import get_environment |
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
|
80 | except ImportError: |
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
|
81 | # For backward compatibility with pip version 20.3.4 |
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
|
82 | from pip._internal.utils import misc |
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
|
83 | return misc.get_installed_distributions( |
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
|
84 | local_only=local_only, |
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
|
85 | user_only=user_only |
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
|
86 | ) |
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
|
87 | else: |
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
|
88 | from pip._internal.utils.compat import stdlib_pkgs |
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
|
89 | dists = get_environment(None).iter_installed_distributions( |
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
|
90 | local_only=local_only, |
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
|
91 | user_only=user_only, |
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
|
92 | skip=stdlib_pkgs, |
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
|
93 | include_editables=True, |
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
|
94 | editables_only=False, |
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
|
95 | ) |
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
|
96 | return [d._dist for d in dists] |
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
|
97 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
99 | __pkgname__ = "pip-licenses" |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
100 | __version__ = "4.1.0" |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
101 | __author__ = "raimon" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
102 | __license__ = "MIT" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
103 | __summary__ = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
104 | "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
|
105 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
106 | __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
|
107 | |
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 | 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
|
110 | '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
|
111 | '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
|
112 | '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
|
113 | '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
|
114 | '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
|
115 | '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
|
116 | '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
|
117 | 'Author', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | '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
|
119 | '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
|
120 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
123 | SUMMARY_FIELD_NAMES = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
124 | "Count", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
125 | "License", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
126 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
127 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
128 | |
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
|
129 | 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
|
130 | '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
|
131 | '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
|
132 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | 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
|
136 | '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
|
137 | '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
|
138 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | 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
|
142 | '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
|
143 | 'author', |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | '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
|
145 | '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
|
146 | '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
|
147 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | # 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
|
150 | 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
|
151 | '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
|
152 | '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
|
153 | '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
|
154 | '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
|
155 | } |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | 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
|
159 | __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
|
160 | '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
|
161 | '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
|
162 | '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
|
163 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | 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
|
166 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
168 | def get_packages( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
169 | args: CustomNamespace, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
170 | ) -> Iterator[dict[str, str | list[str]]]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
171 | def get_pkg_included_file( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
172 | pkg, file_names_rgx: str |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
173 | ) -> 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
|
174 | """ |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | 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
|
176 | 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
|
177 | """ |
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 | 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
|
179 | included_text = LICENSE_UNKNOWN |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
180 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
181 | pkg_files = pkg.files or () |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
182 | pattern = re.compile(file_names_rgx) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
183 | matched_rel_paths = filter( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
184 | lambda file: pattern.match(file.name), pkg_files |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
185 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
186 | for rel_path in matched_rel_paths: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
187 | abs_path = Path(pkg.locate_file(rel_path)) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
188 | if not abs_path.is_file(): |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
189 | continue |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
190 | included_file = str(abs_path) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
191 | with open( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
192 | abs_path, encoding="utf-8", errors="backslashreplace" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
193 | ) as included_file_handle: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
194 | included_text = included_file_handle.read() |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
195 | 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
|
196 | 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
|
197 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
198 | 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
|
199 | (license_file, license_text) = get_pkg_included_file( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
200 | 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
|
201 | ) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
202 | (notice_file, notice_text) = get_pkg_included_file(pkg, "NOTICE.*") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
203 | pkg_info: dict[str, str | list[str]] = { |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
204 | "name": pkg.metadata["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
205 | "version": pkg.version, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
206 | "namever": "{} {}".format(pkg.metadata["name"], pkg.version), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
207 | "licensefile": license_file, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
208 | "licensetext": license_text, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
209 | "noticefile": notice_file, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
210 | "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
|
211 | } |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
212 | metadata = pkg.metadata |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
213 | for key in METADATA_KEYS: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
214 | pkg_info[key] = metadata.get(key, LICENSE_UNKNOWN) # type: ignore[attr-defined] # noqa: E501 |
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
|
215 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
216 | classifiers: list[str] = metadata.get_all("classifier", []) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
217 | pkg_info["license_classifier"] = find_license_from_classifier( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
218 | classifiers |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
219 | ) |
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
|
220 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | if args.filter_strings: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
222 | |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
223 | def filter_string(item: str) -> str: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
224 | return item.encode( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
225 | args.filter_code_page, errors="ignore" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
226 | ).decode(args.filter_code_page) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
227 | |
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
|
228 | 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
|
229 | if isinstance(pkg_info[k], list): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
230 | 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
|
231 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
232 | 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
|
233 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | 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
|
235 | |
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
|
236 | pkgs = get_installed_distributions( |
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
|
237 | local_only=args.local_only, |
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
|
238 | user_only=args.user_only, |
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
|
239 | ) |
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
|
240 | ignore_pkgs_as_lower = [pkg.lower() for pkg in args.ignore_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
|
241 | pkgs_as_lower = [pkg.lower() for pkg in args.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
|
242 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | 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
|
244 | 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
|
245 | 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
|
246 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | 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
|
248 | 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
|
249 | 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
|
250 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | for pkg in pkgs: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
252 | pkg_name = pkg.metadata["name"] |
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
|
253 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | if pkg_name.lower() in ignore_pkgs_as_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
|
255 | 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
|
256 | |
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 | if pkgs_as_lower and pkg_name.lower() not in pkgs_as_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
|
258 | 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
|
259 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | 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
|
261 | 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
|
262 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | 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
|
264 | |
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 | 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
|
266 | args.from_, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
267 | cast(List[str], pkg_info["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
268 | cast(str, pkg_info["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
269 | ) |
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 | if fail_on_licenses: |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
272 | failed_licenses = case_insensitive_set_intersect( |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
273 | license_names, fail_on_licenses |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
274 | ) |
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
|
275 | 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
|
276 | 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
|
277 | "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
|
278 | "{}:{}".format( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
279 | "; ".join(sorted(failed_licenses)), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
280 | pkg_info["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
281 | pkg_info["version"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
282 | ) |
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
|
283 | ) |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | 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
|
285 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | if allow_only_licenses: |
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
287 | uncommon_licenses = case_insensitive_set_diff( |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
288 | license_names, allow_only_licenses |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
289 | ) |
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
|
290 | 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
|
291 | 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
|
292 | "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
|
293 | " for package {}:{}".format( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
294 | "; ".join(sorted(uncommon_licenses)), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
295 | pkg_info["name"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
296 | pkg_info["version"], |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
297 | ) |
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
|
298 | ) |
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 | 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
|
300 | |
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 | 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
|
302 | |
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 | def create_licenses_list( |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | args: "CustomNamespace", output_fields=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
|
306 | |
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 | 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
|
308 | 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
|
309 | 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
|
310 | 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
|
311 | 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
|
312 | license_set = select_license_by_source( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
313 | args.from_, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
314 | cast(List[str], pkg["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
315 | cast(str, pkg["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
316 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
317 | 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
|
318 | 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
|
319 | elif field == 'License-Classifier': |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
320 | row[field] = ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
321 | "; ".join(sorted(pkg["license_classifier"])) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
322 | or LICENSE_UNKNOWN |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
323 | ) |
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
|
324 | elif field.lower() in pkg: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
325 | 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
|
326 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
327 | 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
|
328 | 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
|
329 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | 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
|
331 | |
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 | |
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
|
333 | 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
|
334 | counts = Counter( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
335 | "; ".join( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
336 | sorted( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
337 | select_license_by_source( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
338 | args.from_, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
339 | cast(List[str], pkg["license_classifier"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
340 | cast(str, pkg["license"]), |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
341 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
342 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
343 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
344 | for pkg in get_packages(args) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
345 | ) |
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
|
346 | |
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
|
347 | 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
|
348 | 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
|
349 | 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
|
350 | "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
|
351 | "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
|
352 | }) |
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
|
353 | |
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
|
354 | 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
|
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 | |
9310 | 357 | def create_summary_by_license_list(args: "CustomNamespace"): |
358 | licenses_list = [] | |
359 | for pkg in get_packages(args): | |
360 | licenses_list.extend(select_license_by_source( | |
361 | args.from_, pkg['license_classifier'], pkg['license'])) | |
362 | counts = Counter(licenses_list) | |
363 | ||
364 | licenses = [] | |
365 | for license, count in counts.items(): | |
366 | licenses.append({ | |
367 | "Count": count, | |
368 | "License": license, | |
369 | }) | |
370 | ||
371 | return licenses | |
372 | ||
373 | ||
9849
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
374 | def case_insensitive_set_intersect(set_a, set_b): |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
375 | """Same as set.intersection() but case-insensitive""" |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
376 | common_items = set() |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
377 | set_b_lower = {item.lower() for item in set_b} |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
378 | for elem in set_a: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
379 | if elem.lower() in set_b_lower: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
380 | common_items.add(elem) |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
381 | return common_items |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
382 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
383 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
384 | def case_insensitive_set_diff(set_a, set_b): |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
385 | """Same as set.difference() but case-insensitive""" |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
386 | uncommon_items = set() |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
387 | set_b_lower = {item.lower() for item in set_b} |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
388 | for elem in set_a: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
389 | if not elem.lower() in set_b_lower: |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
390 | uncommon_items.add(elem) |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
391 | return uncommon_items |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
392 | |
99782ca569ed
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
393 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
394 | 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
|
395 | licenses = [] |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
396 | for classifier in filter(lambda c: c.startswith("License"), classifiers): |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
397 | 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
|
398 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
399 | # Through the declaration of 'Classifier: License :: OSI Approved' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
400 | if license != "OSI Approved": |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
401 | 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
|
402 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | 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
|
404 | |
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 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
406 | def select_license_by_source( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
407 | from_source: FromArg, license_classifier: list[str], license_meta: str |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
408 | ) -> 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
|
409 | license_classifier_set = set(license_classifier) or {LICENSE_UNKNOWN} |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
410 | if ( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
411 | from_source == FromArg.CLASSIFIER |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
412 | or from_source == FromArg.MIXED |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
413 | and len(license_classifier) > 0 |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
414 | ): |
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
|
415 | 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
|
416 | 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
|
417 | 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
|
418 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
420 | 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
|
421 | 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
|
422 | 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
|
423 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424 | 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
|
425 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426 | if args.from_ == FromArg.ALL: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
427 | output_fields.append("License-Metadata") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
428 | 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
|
429 | else: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
430 | 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
|
431 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | if args.with_authors: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
433 | 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
|
434 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | if args.with_urls: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
436 | 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
|
437 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | if args.with_description: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
439 | 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
|
440 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | 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
|
442 | if not args.no_license_path: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
443 | 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
|
444 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
445 | 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
|
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 | if args.with_notice_file: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
448 | 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
|
449 | if not args.no_license_path: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
450 | 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
|
451 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | 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
|
453 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | 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
|
456 | 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
|
457 | |
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 | 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
|
459 | licenses = create_summary_list(args) |
9310 | 460 | elif args.summary_by_license: |
461 | licenses = create_summary_by_license_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
|
462 | 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
|
463 | 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
|
464 | |
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
|
465 | 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
|
466 | |
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 | 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
|
469 | def __init__( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
470 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
471 | prog: str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
472 | indent_increment: int = 2, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
473 | max_help_position: int = 24, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
474 | 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
|
475 | ) -> 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
|
476 | 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
|
477 | super().__init__( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
478 | prog, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
479 | indent_increment=indent_increment, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
480 | max_help_position=max_help_position, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
481 | width=width, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
482 | ) |
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
|
483 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | 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
|
485 | 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
|
486 | text = self._expand_help(action) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
487 | separator_pos = text[:3].find("|") |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
488 | 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
|
489 | 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
|
490 | 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
|
491 | 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
|
492 | 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
|
493 | 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
|
494 | 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
|
495 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | 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
|
497 | 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
|
498 | default_value = enum_key_to_value(action.default) |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
499 | return cast(str, self._get_help_string(action)) % { |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
500 | "default": default_value |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
501 | } |
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
|
502 | 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
|
503 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
504 | def _split_lines(self, text: str, width: int) -> List[str]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
505 | 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
|
506 | if separator_pos != -1: |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
507 | flag_splitlines: bool = "R" in text[:separator_pos] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
508 | 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
|
509 | 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
|
510 | 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
|
511 | 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
|
512 | |
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 | 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
|
515 | 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
|
516 | 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
|
517 | summary: bool |
9310 | 518 | summary_by_license: bool |
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
|
519 | local_only: bool |
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
|
520 | user_only:bool |
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
|
521 | 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
|
522 | 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
|
523 | 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
|
524 | 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
|
525 | 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
|
526 | 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
|
527 | 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
|
528 | 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
|
529 | 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
|
530 | 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
|
531 | 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
|
532 | 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
|
533 | 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
|
534 | 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
|
535 | |
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 | |
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 | class CompatibleArgumentParser(argparse.ArgumentParser): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
538 | def parse_args( # type: ignore[override] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
539 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
540 | args: None | Sequence[str] = None, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
541 | namespace: None | CustomNamespace = None, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
542 | ) -> CustomNamespace: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
543 | args_ = cast(CustomNamespace, super().parse_args(args, namespace)) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
544 | self._verify_args(args_) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
545 | 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
|
546 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
547 | 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
|
548 | if args.with_license_file is False and ( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
549 | 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
|
550 | ): |
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
|
551 | 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
|
552 | "'--no-license-path' and '--with-notice-file' require " |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
553 | "the '--with-license-file' option to be set" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
554 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
555 | 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
|
556 | 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
|
557 | "'--filter-code-page' requires the '--filter-strings' " |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
558 | "option to be set" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
559 | ) |
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
|
560 | 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
|
561 | 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
|
562 | 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
|
563 | 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
|
564 | "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
|
565 | "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
|
566 | "#standard-encodings for valid code pages" |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
567 | % args.filter_code_page |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
568 | ) |
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
|
569 | |
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 | |
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 | 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
|
572 | 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
|
573 | 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
|
574 | |
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 | |
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 | 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
|
577 | 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
|
578 | 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
|
579 | 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
|
580 | 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
|
581 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | 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
|
584 | 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
|
585 | 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
|
586 | 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
|
587 | AUTHOR = A = 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
|
588 | 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
|
589 | |
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 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | 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
|
592 | 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
|
593 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | |
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 | 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
|
596 | 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
|
597 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
599 | def choices_from_enum(enum_cls: Type[NoValueEnum]) -> List[str]: |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
600 | return [ |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
601 | key.replace("_", "-").lower() for key in enum_cls.__members__.keys() |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
602 | ] |
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
|
603 | |
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 | |
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 | 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
|
606 | '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
|
607 | '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
|
608 | } |
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 | |
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 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611 | class SelectAction(argparse.Action): |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
612 | def __call__( # type: ignore[override] |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
613 | self, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
614 | 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
|
615 | namespace: argparse.Namespace, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
616 | values: str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
617 | 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
|
618 | ) -> 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
|
619 | 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
|
620 | 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
|
621 | 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
|
622 | |
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 | |
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 | 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
|
625 | parser = CompatibleArgumentParser( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
626 | description=__summary__, formatter_class=CustomHelpFormatter |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
627 | ) |
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
|
628 | |
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 | 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
|
630 | 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
|
631 | 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
|
632 | |
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 | parser.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
634 | "-v", "--version", action="version", version="%(prog)s " + __version__ |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
635 | ) |
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
|
636 | |
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 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
638 | "--from", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
639 | dest="from_", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
640 | action=SelectAction, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
641 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
642 | default=FromArg.MIXED, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
643 | 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
|
644 | choices=choices_from_enum(FromArg), |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
645 | help="R|where to find license information\n" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
646 | '"meta", "classifier, "mixed", "all"\n' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
647 | "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
648 | ) |
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
|
649 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
650 | "-o", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
651 | "--order", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
652 | action=SelectAction, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
653 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
654 | default=OrderArg.NAME, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
655 | 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
|
656 | choices=choices_from_enum(OrderArg), |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
657 | help="R|order by column\n" |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
658 | '"name", "license", "author", "url"\n' |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
659 | "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
660 | ) |
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
|
661 | 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
|
662 | '--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
|
663 | 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
|
664 | 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
|
665 | 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
|
666 | common_options.add_argument( |
9310 | 667 | '--summary-by-license', |
668 | action='store_true', | |
669 | default=False, | |
670 | help='dump summary of each individual license') | |
671 | common_options.add_argument( | |
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
|
672 | '--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
|
673 | 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
|
674 | 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
|
675 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
676 | "-i", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
677 | "--ignore-packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
678 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
679 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
680 | nargs="+", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
681 | 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
|
682 | default=[], |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
683 | help="ignore package name in dumped list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
684 | ) |
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
|
685 | common_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
686 | "-p", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
687 | "--packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
688 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
689 | type=str, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
690 | nargs="+", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
691 | 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
|
692 | default=[], |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
693 | help="only include selected packages in output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
694 | ) |
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
|
695 | common_options.add_argument( |
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
|
696 | '--local-only', |
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
|
697 | action='store_true', |
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
|
698 | default=False, |
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
|
699 | help='include only local packages') |
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
|
700 | common_options.add_argument( |
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
|
701 | '--user-only', |
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
|
702 | action='store_true', |
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
|
703 | default=False, |
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
|
704 | help='include only packages of the user site dir') |
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
|
705 | |
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
|
706 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
707 | "-s", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
708 | "--with-system", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
709 | 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
|
710 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
711 | help="dump with system packages", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
712 | ) |
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
|
713 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
714 | "-a", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
715 | "--with-authors", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
716 | 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
|
717 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
718 | help="dump with package authors", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
719 | ) |
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
|
720 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
721 | "-u", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
722 | "--with-urls", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
723 | 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
|
724 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
725 | help="dump with package urls", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
726 | ) |
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
|
727 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
728 | "-d", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
729 | "--with-description", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
730 | 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
|
731 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
732 | help="dump with short package description", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
733 | ) |
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
|
734 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
735 | "-l", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
736 | "--with-license-file", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
737 | 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
|
738 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
739 | help="dump with location of license file and " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
740 | "contents, most useful with JSON output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
741 | ) |
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
|
742 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
743 | "--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
|
744 | 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
|
745 | default=False, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
746 | help="I|when specified together with option -l, " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
747 | "suppress location of license file output", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
748 | ) |
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
|
749 | format_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
750 | "--with-notice-file", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
751 | action="store_true", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
752 | default=False, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
753 | help="I|when specified together with option -l, " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
754 | "dump with location of license file and contents", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
755 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
756 | format_options.add_argument( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
757 | "--filter-strings", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
758 | action="store_true", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
759 | default=False, |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
760 | help="filter input according to code page", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
761 | ) |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
762 | format_options.add_argument( |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
763 | "--filter-code-page", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
764 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
765 | 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
|
766 | 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
|
767 | metavar="CODE", |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
768 | help="I|specify code page for filtering " "(default: %(default)s)", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
769 | ) |
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
|
770 | |
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 | verify_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
772 | "--fail-on", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
773 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
774 | 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
|
775 | default=None, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
776 | help="fail (exit with code 1) on the first occurrence " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
777 | "of the licenses of the semicolon-separated list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
778 | ) |
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
|
779 | verify_options.add_argument( |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
780 | "--allow-only", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
781 | action="store", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
782 | 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
|
783 | default=None, |
9590
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
784 | help="fail (exit with code 1) on the first occurrence " |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
785 | "of the licenses not in the semicolon-separated list", |
8fad82cb88ab
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9310
diff
changeset
|
786 | ) |
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
|
787 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | 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
|
789 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | 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
|
792 | 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
|
793 | 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
|
794 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
795 | 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
|
796 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
797 | 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
|
798 | |
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 | |
31a7decd3393
Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
800 | 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
|
801 | main() |