1
1
__all__ = ['Distribution' ]
2
2
3
+
3
4
import io
4
- import sys
5
- import re
6
- import os
7
- import numbers
8
- import distutils .log
9
- import distutils .core
10
- import distutils .cmd
11
- import distutils .dist
12
- import distutils .command
13
- from distutils .util import strtobool
14
- from distutils .debug import DEBUG
15
- from distutils .fancy_getopt import translate_longopt
16
- from glob import iglob
17
5
import itertools
6
+ import numbers
7
+ import os
8
+ import re
9
+ import sys
18
10
import textwrap
19
- from contextlib import suppress
20
- from typing import List , Optional , Set , TYPE_CHECKING
21
- from pathlib import Path
22
-
23
11
from collections import defaultdict
12
+ from contextlib import suppress
24
13
from email import message_from_file
14
+ from glob import iglob
15
+ from pathlib import Path
16
+ from typing import TYPE_CHECKING , List , Optional , Set
25
17
18
+ import distutils .cmd
19
+ import distutils .command
20
+ import distutils .core
21
+ import distutils .dist
22
+ import distutils .log
23
+ from distutils .debug import DEBUG
26
24
from distutils .errors import DistutilsOptionError , DistutilsSetupError
25
+ from distutils .fancy_getopt import translate_longopt
27
26
from distutils .util import rfc822_escape
27
+ from distutils .util import strtobool
28
28
29
- from setuptools .extern import packaging
30
- from setuptools .extern import ordered_set
31
- from setuptools .extern .more_itertools import unique_everseen , partition
32
-
33
- import setuptools
34
- import setuptools .command
35
- from setuptools import windows_support
36
- from setuptools .monkey import get_unpatched
37
- from setuptools .config import setupcfg , pyprojecttoml
38
- from setuptools .discovery import ConfigDiscovery
29
+ from .extern .more_itertools import partition , unique_everseen
30
+ from .extern .ordered_set import OrderedSet
31
+ from .extern .packaging .markers import InvalidMarker , Marker
32
+ from .extern .packaging .specifiers import InvalidSpecifier , SpecifierSet
33
+ from .extern .packaging .version import InvalidVersion , Version
39
34
40
- from setuptools .extern .packaging import version
41
- from . import _reqs
42
35
from . import _entry_points
43
36
from . import _normalization
37
+ from . import _reqs
38
+ from . import command as _ # noqa -- imported for side-effects
44
39
from ._importlib import metadata
40
+ from .config import setupcfg , pyprojecttoml
41
+ from .discovery import ConfigDiscovery
42
+ from .monkey import get_unpatched
45
43
from .warnings import InformationOnly , SetuptoolsDeprecationWarning
46
44
45
+
47
46
if TYPE_CHECKING :
48
47
from email .message import Message
49
48
50
- __import__ ('setuptools.extern.packaging.specifiers' )
51
- __import__ ('setuptools.extern.packaging.version' )
52
-
53
49
54
50
def get_metadata_version (self ):
55
51
mv = getattr (self , 'metadata_version' , None )
56
52
if mv is None :
57
- mv = version . Version ('2.1' )
53
+ mv = Version ('2.1' )
58
54
self .metadata_version = mv
59
55
return mv
60
56
@@ -102,7 +98,7 @@ def read_pkg_file(self, file):
102
98
"""Reads the metadata values from a file object."""
103
99
msg = message_from_file (file )
104
100
105
- self .metadata_version = version . Version (msg ['metadata-version' ])
101
+ self .metadata_version = Version (msg ['metadata-version' ])
106
102
self .name = _read_field_from_msg (msg , 'name' )
107
103
self .version = _read_field_from_msg (msg , 'version' )
108
104
self .description = _read_field_from_msg (msg , 'summary' )
@@ -116,9 +112,7 @@ def read_pkg_file(self, file):
116
112
self .license = _read_field_unescaped_from_msg (msg , 'license' )
117
113
118
114
self .long_description = _read_field_unescaped_from_msg (msg , 'description' )
119
- if self .long_description is None and self .metadata_version >= version .Version (
120
- '2.1'
121
- ):
115
+ if self .long_description is None and self .metadata_version >= Version ('2.1' ):
122
116
self .long_description = _read_payload_from_msg (msg )
123
117
self .description = _read_field_from_msg (msg , 'summary' )
124
118
@@ -129,7 +123,7 @@ def read_pkg_file(self, file):
129
123
self .classifiers = _read_list_from_msg (msg , 'classifier' )
130
124
131
125
# PEP 314 - these fields only exist in 1.1
132
- if self .metadata_version == version . Version ('1.1' ):
126
+ if self .metadata_version == Version ('1.1' ):
133
127
self .requires = _read_list_from_msg (msg , 'requires' )
134
128
self .provides = _read_list_from_msg (msg , 'provides' )
135
129
self .obsoletes = _read_list_from_msg (msg , 'obsoletes' )
@@ -299,7 +293,7 @@ def _check_extra(extra, reqs):
299
293
name , sep , marker = extra .partition (':' )
300
294
try :
301
295
_check_marker (marker )
302
- except packaging . markers . InvalidMarker :
296
+ except InvalidMarker :
303
297
msg = f"Invalid environment marker: { marker } ({ extra !r} )"
304
298
raise DistutilsSetupError (msg ) from None
305
299
list (_reqs .parse (reqs ))
@@ -308,7 +302,7 @@ def _check_extra(extra, reqs):
308
302
def _check_marker (marker ):
309
303
if not marker :
310
304
return
311
- m = packaging . markers . Marker (marker )
305
+ m = Marker (marker )
312
306
m .evaluate ()
313
307
314
308
@@ -344,8 +338,8 @@ def check_requirements(dist, attr, value):
344
338
def check_specifier (dist , attr , value ):
345
339
"""Verify that value is a valid version specifier"""
346
340
try :
347
- packaging . specifiers . SpecifierSet (value )
348
- except (packaging . specifiers . InvalidSpecifier , AttributeError ) as error :
341
+ SpecifierSet (value )
342
+ except (InvalidSpecifier , AttributeError ) as error :
349
343
tmpl = (
350
344
"{attr!r} must be a string " "containing valid version specifiers; {error}"
351
345
)
@@ -448,7 +442,7 @@ class Distribution(_Distribution):
448
442
_DISTUTILS_UNSUPPORTED_METADATA = {
449
443
'long_description_content_type' : lambda : None ,
450
444
'project_urls' : dict ,
451
- 'provides_extras' : ordered_set . OrderedSet ,
445
+ 'provides_extras' : OrderedSet ,
452
446
'license_file' : lambda : None ,
453
447
'license_files' : lambda : None ,
454
448
}
@@ -499,7 +493,7 @@ def __init__(self, attrs=None):
499
493
# Save the original dependencies before they are processed into the egg format
500
494
self ._orig_extras_require = {}
501
495
self ._orig_install_requires = []
502
- self ._tmp_extras_require = defaultdict (ordered_set . OrderedSet )
496
+ self ._tmp_extras_require = defaultdict (OrderedSet )
503
497
504
498
self .set_defaults = ConfigDiscovery (self )
505
499
@@ -535,10 +529,12 @@ def _set_metadata_defaults(self, attrs):
535
529
536
530
@staticmethod
537
531
def _normalize_version (version ):
538
- if isinstance (version , setuptools .sic ) or version is None :
532
+ from . import sic
533
+
534
+ if isinstance (version , sic ) or version is None :
539
535
return version
540
536
541
- normalized = str (packaging . version . Version (version ))
537
+ normalized = str (Version (version ))
542
538
if version != normalized :
543
539
InformationOnly .emit (f"Normalizing '{ version } ' to '{ normalized } '" )
544
540
return normalized
@@ -552,8 +548,10 @@ def _validate_version(version):
552
548
553
549
if version is not None :
554
550
try :
555
- packaging .version .Version (version )
556
- except (packaging .version .InvalidVersion , TypeError ):
551
+ Version (version )
552
+ except (InvalidVersion , TypeError ):
553
+ from . import sic
554
+
557
555
SetuptoolsDeprecationWarning .emit (
558
556
f"Invalid version: { version !r} ." ,
559
557
"""
@@ -566,7 +564,7 @@ def _validate_version(version):
566
564
# Warning initially introduced in 26 Sept 2014
567
565
# pypa/packaging already removed legacy versions.
568
566
)
569
- return setuptools . sic (version )
567
+ return sic (version )
570
568
return version
571
569
572
570
def _finalize_requires (self ):
@@ -602,7 +600,7 @@ def _convert_extras_requirements(self):
602
600
`"extra:{marker}": ["barbazquux"]`.
603
601
"""
604
602
spec_ext_reqs = getattr (self , 'extras_require' , None ) or {}
605
- tmp = defaultdict (ordered_set . OrderedSet )
603
+ tmp = defaultdict (OrderedSet )
606
604
self ._tmp_extras_require = getattr (self , '_tmp_extras_require' , tmp )
607
605
for section , v in spec_ext_reqs .items ():
608
606
# Do not strip empty sections.
@@ -903,7 +901,7 @@ def parse_config_files(self, filenames=None, ignore_option_errors=False):
903
901
904
902
def fetch_build_eggs (self , requires ):
905
903
"""Resolve pre-setup requirements"""
906
- from setuptools .installer import _fetch_build_eggs
904
+ from .installer import _fetch_build_eggs
907
905
908
906
return _fetch_build_eggs (self , requires )
909
907
@@ -946,6 +944,8 @@ def _finalize_setup_keywords(self):
946
944
ep .load ()(self , ep .name , value )
947
945
948
946
def get_egg_cache_dir (self ):
947
+ from . import windows_support
948
+
949
949
egg_cache_dir = os .path .join (os .curdir , '.eggs' )
950
950
if not os .path .exists (egg_cache_dir ):
951
951
os .mkdir (egg_cache_dir )
@@ -966,7 +966,7 @@ def get_egg_cache_dir(self):
966
966
967
967
def fetch_build_egg (self , req ):
968
968
"""Fetch an egg needed for building"""
969
- from setuptools .installer import fetch_build_egg
969
+ from .installer import fetch_build_egg
970
970
971
971
return fetch_build_egg (self , req )
972
972
0 commit comments