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