Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
keewenaw
GitHub Repository: keewenaw/ethereum-wallet-cracker
Path: blob/main/test/lib/python3.9/site-packages/setuptools/command/dist_info.py
4799 views
1
"""
2
Create a dist_info directory
3
As defined in the wheel specification
4
"""
5
6
import os
7
import re
8
import warnings
9
from inspect import cleandoc
10
11
from distutils.core import Command
12
from distutils import log
13
from setuptools.extern import packaging
14
15
16
class dist_info(Command):
17
18
description = 'create a .dist-info directory'
19
20
user_options = [
21
('egg-base=', 'e', "directory containing .egg-info directories"
22
" (default: top of the source tree)"),
23
]
24
25
def initialize_options(self):
26
self.egg_base = None
27
28
def finalize_options(self):
29
pass
30
31
def run(self):
32
egg_info = self.get_finalized_command('egg_info')
33
egg_info.egg_base = self.egg_base
34
egg_info.finalize_options()
35
egg_info.run()
36
name = _safe(self.distribution.get_name())
37
version = _version(self.distribution.get_version())
38
base = self.egg_base or os.curdir
39
dist_info_dir = os.path.join(base, f"{name}-{version}.dist-info")
40
log.info("creating '{}'".format(os.path.abspath(dist_info_dir)))
41
42
bdist_wheel = self.get_finalized_command('bdist_wheel')
43
bdist_wheel.egg2dist(egg_info.egg_info, dist_info_dir)
44
45
46
def _safe(component: str) -> str:
47
"""Escape a component used to form a wheel name according to PEP 491"""
48
return re.sub(r"[^\w\d.]+", "_", component)
49
50
51
def _version(version: str) -> str:
52
"""Convert an arbitrary string to a version string."""
53
v = version.replace(' ', '.')
54
try:
55
return str(packaging.version.Version(v)).replace("-", "_")
56
except packaging.version.InvalidVersion:
57
msg = f"""Invalid version: {version!r}.
58
!!\n\n
59
###################
60
# Invalid version #
61
###################
62
{version!r} is not valid according to PEP 440.\n
63
Please make sure specify a valid version for your package.
64
Also note that future releases of setuptools may halt the build process
65
if an invalid version is given.
66
\n\n!!
67
"""
68
warnings.warn(cleandoc(msg))
69
return _safe(v).strip("_")
70
71