omdev 0.0.0.dev36__py3-none-any.whl → 0.0.0.dev37__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

omdev/tools/piptools.py CHANGED
@@ -1,4 +1,6 @@
1
+ import importlib.metadata
1
2
  import io
3
+ import sys
2
4
  import urllib.request
3
5
  import xml.etree.ElementTree as ET # noqa
4
6
 
@@ -6,6 +8,8 @@ from omlish import argparse as ap
6
8
  from omlish import check
7
9
 
8
10
  from ..cli import CliModule
11
+ from ..packaging.names import canonicalize_name
12
+ from ..packaging.requires import parse_requirement
9
13
 
10
14
 
11
15
  PYPI_URL = 'https://pypi.org/'
@@ -47,6 +51,36 @@ class Cli(ap.Cli):
47
51
  with open(self.args.file, 'w') as f:
48
52
  f.write(new_src)
49
53
 
54
+ @ap.command(
55
+ ap.arg('path', nargs='*'),
56
+ )
57
+ def list_root_dists(self) -> None:
58
+ paths = self.args.path or sys.path
59
+
60
+ dists: set[str] = set()
61
+ reqs_by_use: dict[str, set[str]] = {}
62
+ uses_by_req: dict[str, set[str]] = {}
63
+ for dist in importlib.metadata.distributions(paths=paths):
64
+ dist_cn = canonicalize_name(dist.metadata['Name'], validate=True)
65
+ if dist_cn in dists:
66
+ # raise NameError(dist_cn)
67
+ print(f'!! duplicate dist: {dist_cn}', file=sys.stderr)
68
+ continue
69
+
70
+ dists.add(dist_cn)
71
+ for req_str in dist.requires or []:
72
+ req = parse_requirement(req_str)
73
+ if req.extras:
74
+ continue
75
+
76
+ req_cn = canonicalize_name(req.name)
77
+ reqs_by_use.setdefault(dist_cn, set()).add(req_cn)
78
+ uses_by_req.setdefault(req_cn, set()).add(dist_cn)
79
+
80
+ for d in sorted(dists):
81
+ if not uses_by_req.get(d):
82
+ print(d)
83
+
50
84
 
51
85
  # @omlish-manifest
52
86
  _CLI_MODULE = CliModule('pip', __name__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev36
3
+ Version: 0.0.0.dev37
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: ~=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish ==0.0.0.dev36
15
+ Requires-Dist: omlish ==0.0.0.dev37
16
16
  Provides-Extra: all
17
17
  Requires-Dist: pycparser ~=2.22 ; extra == 'all'
18
18
  Requires-Dist: cffi ~=1.17 ; extra == 'all'
@@ -1,4 +1,4 @@
1
- omdev/.manifests.json,sha256=g5YMyKNbgWIAzHr55ATgsRd1kfzRIh3KDrYXfI1e69Q,2595
1
+ omdev/.manifests.json,sha256=Rb0JnDKfdMCMgojZmR1CfzyvnjPrToEaRJ3Pa4Tr0_E,2595
2
2
  omdev/__about__.py,sha256=LqSNNFFcT84xW3W8fIOJ78kPYJKFLIXZyDX-AJREvN0,1005
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/bracepy.py,sha256=HwBK5XmlOsF_juTel25fRLJK9vHSJCWXuCc-OZlevRQ,2619
@@ -13,7 +13,7 @@ omdev/tokens.py,sha256=GusxQ1Cd_eiScuR8XTTtc9QFhOgYviYGBZmFnn3Hj7s,756
13
13
  omdev/wheelfile.py,sha256=yfupGcGkbFlmzGzKU64k_vmOKpaKnUlDWxeGn2KdekU,10005
14
14
  omdev/amalg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  omdev/amalg/__main__.py,sha256=h94M-VqZ3AFBU2a8zOsjeKK7RF6uINhTHl6OiGbVMgw,163
16
- omdev/amalg/amalg.py,sha256=WXMEA55FMJ2VmM1TpjMWwUN0_PdbwUofBl23YJAregs,14222
16
+ omdev/amalg/amalg.py,sha256=8tsrsKpgB54aOZ7CPQ6EoUIUYXylMvJpDOOJwbvSZ5E,14339
17
17
  omdev/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  omdev/cache/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  omdev/cache/compute/cache.py,sha256=pEbcTSQavhX7M0olzR8AOCtHx7tMnMnEDEfTPQVY5uE,3602
@@ -60,19 +60,24 @@ omdev/cli/types.py,sha256=rYM5jogfZqC3tpWLOHSDL6iaV3XWGWM1hJYd11I-ImA,107
60
60
  omdev/interp/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
61
61
  omdev/interp/__main__.py,sha256=GMCqeGYltgt5dlJzHxY9gqisa8cRkrPfmZYuZnjg4WI,162
62
62
  omdev/interp/cli.py,sha256=sh7PZQoLletUViw1Y9OXNr9ekyNZ6YyxYuOQ_n9hyqU,2072
63
- omdev/interp/inspect.py,sha256=SI4jQmWfXCnlceFTxlVRfTlEYYCjO_X12wuG5e74yto,2849
63
+ omdev/interp/inspect.py,sha256=55_il4ehoW6Q468YE57w5CyZxHLNsndkRIH4W80OplM,2848
64
64
  omdev/interp/providers.py,sha256=PFEjozW0c33eqg8sno-GHMKbhVUzQF9jrAx-M0uQimk,1787
65
- omdev/interp/pyenv.py,sha256=zPCkLlC0Qv6iywU-n847IJOA9iYyufbVYvsgQyzzIe0,13743
65
+ omdev/interp/pyenv.py,sha256=NMRcxslEqYd0X2_PHsRsBnEmKWMmAz6AIN_FjWR5BqU,13741
66
66
  omdev/interp/resolvers.py,sha256=tpzlmqGp1C4QKdA6TfcPmtmaygu7mb6WK2RPSbyNQ6s,3022
67
67
  omdev/interp/standalone.py,sha256=XcltiL7ypcfV89C82_3knQ3Kx7aW4wnnxf2056ZXC3A,7731
68
- omdev/interp/system.py,sha256=UFHfMR0CHCEnNx5fhrze8esAwigpRrJUA33ftq6nA0I,3514
69
- omdev/interp/types.py,sha256=2nM3MJaOU8O1XA8DrvwyOjBWSboBn16kgFIy5JVkDck,2440
68
+ omdev/interp/system.py,sha256=bI-JhX4GVJqW7wMxnIa-DGJWnCLmFcIsnl9pc1RGY2g,3513
69
+ omdev/interp/types.py,sha256=EMN3StEMkFoQAMUIZd7JYL4uUWqzFGY-2hTL8EBznYM,2437
70
70
  omdev/manifests/__init__.py,sha256=P2B0dpT8D7l5lJwRGPA92IcQj6oeXfd90X5-q9BJrKg,51
71
71
  omdev/manifests/build.py,sha256=_anZfhIAwUQo0J4BfKvDsvivrST2U5VigJaFKbJKXMQ,9067
72
72
  omdev/manifests/load.py,sha256=1QznPL4zNlu1eIFkoGrO78coIQCk9LlMC8FJ6PcvhNM,4373
73
73
  omdev/manifests/types.py,sha256=Jv6PAdVLPb9Hh4y6vDhPlWuMNBBViin1bC_u83jfsH4,234
74
74
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  omdev/mypy/debug.py,sha256=WcZw-3Z1njg_KFGqi3DB6RuqbBa3dLArJnjVCuY1Mn0,3003
76
+ omdev/packaging/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
77
+ omdev/packaging/names.py,sha256=lwws9dgClio0_-w6fZcihOKxx4FPkrHUxum918KjZO8,2513
78
+ omdev/packaging/requires.py,sha256=VQ-rRDK4_w2R-0xMTbLCwhvZwkO-qgS8uEMbRhNmfOw,15598
79
+ omdev/packaging/specifiers.py,sha256=6Odf9e6farwlPRsD_YqwTfYKG-BXn_dIcKtqfkhfodI,17432
80
+ omdev/packaging/versions.py,sha256=ei2eopEsJq3zSMJmezK1nzZgikgCdxFtnF3f69nCRZQ,12246
76
81
  omdev/precheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
82
  omdev/precheck/__main__.py,sha256=p8jRkwErGndtO4PO4L5nAC8sqmJ0sW3u-rq8p1GN3ec,169
78
83
  omdev/precheck/base.py,sha256=a_lGoFM-QhL8u8XDUYFhb-feEyfPbP4j8lcmNO51sHY,732
@@ -90,8 +95,8 @@ omdev/pyproject/reqs.py,sha256=jgDH_nmOkcgxKshbeFt-byPAuGfwoxHuyzaolGu-lms,2299
90
95
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
91
96
  omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,1064
92
97
  omdev/scripts/execrss.py,sha256=HzDNmwXOO8fMwIRXw9q8CUnVfLFCQASyU2tfY_y2Vf8,324
93
- omdev/scripts/interp.py,sha256=nSXgULEj1gXCT0zM4cfgK0LV_CcazWSN6xH3pX9uYGY,70845
94
- omdev/scripts/pyproject.py,sha256=h8qbqvHywoZtpcIcm549XiRoxMm9j8qrWOK8fUb-Djs,156976
98
+ omdev/scripts/interp.py,sha256=CB9Eg8qPULFIQmMDsbLTGZ74c3xASWrQJ9KriLSb19A,70949
99
+ omdev/scripts/pyproject.py,sha256=zLDXrPavD4MzWTTwOKEPPL8y71_XmLlFf7r7AYXObq0,157080
95
100
  omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
96
101
  omdev/toml/parser.py,sha256=84bn09uhYHwQGyfww6Rw6y1RxPAE_HDltODOSakcqDM,29186
97
102
  omdev/toml/writer.py,sha256=lk3on3YXVbWuLJa-xsOzOhs1bBAT1vXqw4mBbluZl_w,3040
@@ -100,15 +105,12 @@ omdev/tools/dockertools.py,sha256=x00GV8j1KReMXwxJ641GlcsVwHoWeuzdIKVBp36BqwU,52
100
105
  omdev/tools/gittools.py,sha256=s_-cxh-4Nv2a_bJtHZ6AiKF8kx2IjDrt_GOH8Wjz-3M,669
101
106
  omdev/tools/importscan.py,sha256=XRLiasVSaTIp-jnO0-Nfhi0t6gnv_hVy5j2nVfEvuMI,3831
102
107
  omdev/tools/importtrace.py,sha256=oDry9CwIv5h96wSaTVKJ0qQ5vMGxYE5oBtfF-GYNLJs,13430
103
- omdev/tools/piptools.py,sha256=S0ea5HW2YRAwMS0MSq7Wvg8kdcVsQhCEsCmxs4vPWGs,1365
108
+ omdev/tools/piptools.py,sha256=ANlJTM6ozbSkI6KPNNg7LIVg8wDc2OoK-M8GhjnFTiw,2559
104
109
  omdev/tools/rst.py,sha256=6dWk8QZHoGiLSuBw3TKsXZjjFK6wWBEtPi9krdCLKKg,977
105
110
  omdev/tools/sqlrepl.py,sha256=tmFZh80-xsGM62dyQ7_UGLebChrj7IHbIPYBWDJMgVk,5741
106
- omdev/versioning/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
107
- omdev/versioning/specifiers.py,sha256=6Odf9e6farwlPRsD_YqwTfYKG-BXn_dIcKtqfkhfodI,17432
108
- omdev/versioning/versions.py,sha256=ei2eopEsJq3zSMJmezK1nzZgikgCdxFtnF3f69nCRZQ,12246
109
- omdev-0.0.0.dev36.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
110
- omdev-0.0.0.dev36.dist-info/METADATA,sha256=KAU82SqkiWBiTrxL3vGIYGpZUm1TsWeoMcJDA85tEG8,1252
111
- omdev-0.0.0.dev36.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
112
- omdev-0.0.0.dev36.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
113
- omdev-0.0.0.dev36.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
114
- omdev-0.0.0.dev36.dist-info/RECORD,,
111
+ omdev-0.0.0.dev37.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
112
+ omdev-0.0.0.dev37.dist-info/METADATA,sha256=IQuSit_OCW_wTB9O_EGapsmDJd8tGiZRG5b8X1qzmog,1252
113
+ omdev-0.0.0.dev37.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
114
+ omdev-0.0.0.dev37.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
115
+ omdev-0.0.0.dev37.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
116
+ omdev-0.0.0.dev37.dist-info/RECORD,,
File without changes
File without changes
File without changes