Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
c01cbc42
Kaydet (Commit)
c01cbc42
authored
Haz 01, 2009
tarafından
Tarek Ziadé
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
improved distutils.dist test coverage, pep-8 compliancy
üst
b02ceda3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
103 additions
and
61 deletions
+103
-61
dist.py
Lib/distutils/dist.py
+52
-55
test_dist.py
Lib/distutils/tests/test_dist.py
+51
-6
No files found.
Lib/distutils/dist.py
Dosyayı görüntüle @
c01cbc42
...
...
@@ -6,8 +6,7 @@ being built/installed/distributed.
__revision__
=
"$Id$"
import
sys
,
os
,
string
,
re
from
types
import
*
import
sys
,
os
,
re
try
:
import
warnings
...
...
@@ -251,7 +250,7 @@ Common commands: (see '--help-commands' for more)
# Now work on the rest of the attributes. Any attribute that's
# not already defined is invalid!
for
(
key
,
val
)
in
attrs
.
items
():
for
(
key
,
val
)
in
attrs
.
items
():
if
hasattr
(
self
.
metadata
,
"set_"
+
key
):
getattr
(
self
.
metadata
,
"set_"
+
key
)(
val
)
elif
hasattr
(
self
.
metadata
,
key
):
...
...
@@ -286,22 +285,24 @@ Common commands: (see '--help-commands' for more)
commands
.
sort
()
if
header
is
not
None
:
print
indent
+
header
self
.
announce
(
indent
+
header
)
indent
=
indent
+
" "
if
not
commands
:
print
indent
+
"no commands known yet"
self
.
announce
(
indent
+
"no commands known yet"
)
return
for
cmd_name
in
commands
:
opt_dict
=
self
.
command_options
.
get
(
cmd_name
)
if
opt_dict
is
None
:
print
indent
+
"no option dict for '
%
s' command"
%
cmd_name
self
.
announce
(
indent
+
"no option dict for '
%
s' command"
%
cmd_name
)
else
:
print
indent
+
"option dict for '
%
s' command:"
%
cmd_name
self
.
announce
(
indent
+
"option dict for '
%
s' command:"
%
cmd_name
)
out
=
pformat
(
opt_dict
)
for
line
in
string
.
split
(
out
,
"
\n
"
):
print
indent
+
" "
+
line
for
line
in
out
.
split
(
'
\n
'
):
self
.
announce
(
indent
+
" "
+
line
)
# -- Config file finding/parsing methods ---------------------------
...
...
@@ -352,11 +353,13 @@ Common commands: (see '--help-commands' for more)
if
filenames
is
None
:
filenames
=
self
.
find_config_files
()
if
DEBUG
:
print
"Distribution.parse_config_files():"
if
DEBUG
:
self
.
announce
(
"Distribution.parse_config_files():"
)
parser
=
ConfigParser
()
for
filename
in
filenames
:
if
DEBUG
:
print
" reading"
,
filename
if
DEBUG
:
self
.
announce
(
" reading"
,
filename
)
parser
.
read
(
filename
)
for
section
in
parser
.
sections
():
options
=
parser
.
options
(
section
)
...
...
@@ -365,7 +368,7 @@ Common commands: (see '--help-commands' for more)
for
opt
in
options
:
if
opt
!=
'__name__'
:
val
=
parser
.
get
(
section
,
opt
)
opt
=
string
.
replace
(
opt
,
'-'
,
'_'
)
opt
=
opt
.
replace
(
'-'
,
'_'
)
opt_dict
[
opt
]
=
(
filename
,
val
)
# Make the ConfigParser forget everything (so we retain
...
...
@@ -503,7 +506,7 @@ Common commands: (see '--help-commands' for more)
# Also make sure that the command object provides a list of its
# known options.
if
not
(
hasattr
(
cmd_class
,
'user_options'
)
and
type
(
cmd_class
.
user_options
)
is
ListType
):
isinstance
(
cmd_class
.
user_options
,
list
)
):
raise
DistutilsClassError
,
\
(
"command class
%
s must provide "
+
"'user_options' attribute (a list of tuples)"
)
%
\
...
...
@@ -519,7 +522,7 @@ Common commands: (see '--help-commands' for more)
# Check for help_options in command class. They have a different
# format (tuple of four) so we need to preprocess them here.
if
(
hasattr
(
cmd_class
,
'help_options'
)
and
type
(
cmd_class
.
help_options
)
is
ListType
):
isinstance
(
cmd_class
.
help_options
,
list
)
):
help_options
=
fix_help_options
(
cmd_class
.
help_options
)
else
:
help_options
=
[]
...
...
@@ -537,14 +540,11 @@ Common commands: (see '--help-commands' for more)
return
if
(
hasattr
(
cmd_class
,
'help_options'
)
and
type
(
cmd_class
.
help_options
)
is
ListType
):
isinstance
(
cmd_class
.
help_options
,
list
)
):
help_option_found
=
0
for
(
help_option
,
short
,
desc
,
func
)
in
cmd_class
.
help_options
:
if
hasattr
(
opts
,
parser
.
get_attr_name
(
help_option
)):
help_option_found
=
1
#print "showing help for option %s of command %s" % \
# (help_option[0],cmd_class)
if
callable
(
func
):
func
()
else
:
...
...
@@ -569,17 +569,13 @@ Common commands: (see '--help-commands' for more)
instance, analogous to the .finalize_options() method of Command
objects.
"""
keywords
=
self
.
metadata
.
keywords
if
keywords
is
not
None
:
if
type
(
keywords
)
is
StringType
:
keywordlist
=
string
.
split
(
keywords
,
','
)
self
.
metadata
.
keywords
=
map
(
string
.
strip
,
keywordlist
)
platforms
=
self
.
metadata
.
platforms
if
platforms
is
not
None
:
if
type
(
platforms
)
is
StringType
:
platformlist
=
string
.
split
(
platforms
,
','
)
self
.
metadata
.
platforms
=
map
(
string
.
strip
,
platformlist
)
for
attr
in
(
'keywords'
,
'platforms'
):
value
=
getattr
(
self
.
metadata
,
attr
)
if
value
is
None
:
continue
if
isinstance
(
value
,
str
):
value
=
[
elm
.
strip
()
for
elm
in
value
.
split
(
','
)]
setattr
(
self
.
metadata
,
attr
,
value
)
def
_show_help
(
self
,
parser
,
global_options
=
1
,
display_options
=
1
,
commands
=
[]):
...
...
@@ -606,31 +602,30 @@ Common commands: (see '--help-commands' for more)
options
=
self
.
global_options
parser
.
set_option_table
(
options
)
parser
.
print_help
(
self
.
common_usage
+
"
\n
Global options:"
)
print
self
.
announce
(
''
)
if
display_options
:
parser
.
set_option_table
(
self
.
display_options
)
parser
.
print_help
(
"Information display options (just display "
+
"information, ignore any commands)"
)
print
self
.
announce
(
''
)
for
command
in
self
.
commands
:
if
type
(
command
)
is
ClassType
and
issubclass
(
command
,
Command
):
if
isinstance
(
command
,
type
)
and
issubclass
(
command
,
Command
):
klass
=
command
else
:
klass
=
self
.
get_command_class
(
command
)
if
(
hasattr
(
klass
,
'help_options'
)
and
type
(
klass
.
help_options
)
is
ListType
):
isinstance
(
klass
.
help_options
,
list
)
):
parser
.
set_option_table
(
klass
.
user_options
+
fix_help_options
(
klass
.
help_options
))
else
:
parser
.
set_option_table
(
klass
.
user_options
)
parser
.
print_help
(
"Options for '
%
s' command:"
%
klass
.
__name__
)
print
self
.
announce
(
''
)
print
gen_usage
(
self
.
script_name
)
return
self
.
announce
(
gen_usage
(
self
.
script_name
))
def
handle_display_options
(
self
,
option_order
):
"""If there were any non-global "display-only" options
...
...
@@ -645,8 +640,8 @@ Common commands: (see '--help-commands' for more)
# we ignore "foo bar").
if
self
.
help_commands
:
self
.
print_commands
()
print
print
gen_usage
(
self
.
script_name
)
self
.
announce
(
''
)
self
.
announce
(
gen_usage
(
self
.
script_name
)
)
return
1
# If user supplied any of the "display metadata" options, then
...
...
@@ -662,12 +657,12 @@ Common commands: (see '--help-commands' for more)
opt
=
translate_longopt
(
opt
)
value
=
getattr
(
self
.
metadata
,
"get_"
+
opt
)()
if
opt
in
[
'keywords'
,
'platforms'
]:
print
string
.
join
(
value
,
','
)
self
.
announce
(
','
.
join
(
value
)
)
elif
opt
in
(
'classifiers'
,
'provides'
,
'requires'
,
'obsoletes'
):
print
string
.
join
(
value
,
'
\n
'
)
self
.
announce
(
'
\n
'
.
join
(
value
)
)
else
:
print
value
self
.
announce
(
value
)
any_display_options
=
1
return
any_display_options
...
...
@@ -676,7 +671,7 @@ Common commands: (see '--help-commands' for more)
"""Print a subset of the list of all commands -- used by
'print_commands()'.
"""
print
header
+
":"
self
.
announce
(
header
+
":"
)
for
cmd
in
commands
:
klass
=
self
.
cmdclass
.
get
(
cmd
)
...
...
@@ -687,7 +682,7 @@ Common commands: (see '--help-commands' for more)
except
AttributeError
:
description
=
"(no description available)"
print
"
%-*
s
%
s"
%
(
max_length
,
cmd
,
description
)
self
.
announce
(
"
%-*
s
%
s"
%
(
max_length
,
cmd
,
description
)
)
def
print_commands
(
self
):
"""Print out a help message listing all available commands with a
...
...
@@ -760,11 +755,10 @@ Common commands: (see '--help-commands' for more)
def
get_command_packages
(
self
):
"""Return a list of packages from which commands are loaded."""
pkgs
=
self
.
command_packages
if
not
isinstance
(
pkgs
,
type
([])):
pkgs
=
string
.
split
(
pkgs
or
""
,
","
)
for
i
in
range
(
len
(
pkgs
)):
pkgs
[
i
]
=
string
.
strip
(
pkgs
[
i
])
pkgs
=
filter
(
None
,
pkgs
)
if
not
isinstance
(
pkgs
,
list
):
if
pkgs
is
None
:
pkgs
=
''
pkgs
=
[
pkg
.
strip
()
for
pkg
in
pkgs
.
split
(
','
)
if
pkg
!=
''
]
if
"distutils.command"
not
in
pkgs
:
pkgs
.
insert
(
0
,
"distutils.command"
)
self
.
command_packages
=
pkgs
...
...
@@ -818,8 +812,8 @@ Common commands: (see '--help-commands' for more)
cmd_obj
=
self
.
command_obj
.
get
(
command
)
if
not
cmd_obj
and
create
:
if
DEBUG
:
print
"Distribution.get_command_obj(): "
\
"creating '
%
s' command object"
%
command
self
.
announce
(
"Distribution.get_command_obj(): "
\
"creating '
%
s' command object"
%
command
)
klass
=
self
.
get_command_class
(
command
)
cmd_obj
=
self
.
command_obj
[
command
]
=
klass
(
self
)
...
...
@@ -849,9 +843,12 @@ Common commands: (see '--help-commands' for more)
if
option_dict
is
None
:
option_dict
=
self
.
get_option_dict
(
command_name
)
if
DEBUG
:
print
" setting options for '
%
s' command:"
%
command_name
if
DEBUG
:
self
.
announce
(
" setting options for '
%
s' command:"
%
command_name
)
for
(
option
,
(
source
,
value
))
in
option_dict
.
items
():
if
DEBUG
:
print
"
%
s =
%
s (from
%
s)"
%
(
option
,
value
,
source
)
if
DEBUG
:
self
.
announce
(
"
%
s =
%
s (from
%
s)"
%
(
option
,
value
,
source
))
try
:
bool_opts
=
map
(
translate_longopt
,
command_obj
.
boolean_options
)
except
AttributeError
:
...
...
@@ -862,7 +859,7 @@ Common commands: (see '--help-commands' for more)
neg_opt
=
{}
try
:
is_string
=
type
(
value
)
is
StringType
is_string
=
isinstance
(
value
,
str
)
if
option
in
neg_opt
and
is_string
:
setattr
(
command_obj
,
neg_opt
[
option
],
not
strtobool
(
value
))
elif
option
in
bool_opts
and
is_string
:
...
...
@@ -1044,10 +1041,10 @@ class DistributionMetadata:
if
self
.
download_url
:
self
.
_write_field
(
file
,
'Download-URL'
,
self
.
download_url
)
long_desc
=
rfc822_escape
(
self
.
get_long_description
())
long_desc
=
rfc822_escape
(
self
.
get_long_description
())
self
.
_write_field
(
file
,
'Description'
,
long_desc
)
keywords
=
string
.
join
(
self
.
get_keywords
(),
','
)
keywords
=
','
.
join
(
self
.
get_keywords
()
)
if
keywords
:
self
.
_write_field
(
file
,
'Keywords'
,
keywords
)
...
...
Lib/distutils/tests/test_dist.py
Dosyayı görüntüle @
c01cbc42
# -*- coding:
latin-1
-*-
# -*- coding:
utf8
-*-
"""Tests for distutils.dist."""
import
os
...
...
@@ -36,7 +36,9 @@ class TestDistribution(Distribution):
return
self
.
_config_files
class
DistributionTestCase
(
support
.
TempdirManager
,
unittest
.
TestCase
):
class
DistributionTestCase
(
support
.
TempdirManager
,
support
.
LoggingSilencer
,
unittest
.
TestCase
):
def
setUp
(
self
):
super
(
DistributionTestCase
,
self
)
.
setUp
()
...
...
@@ -106,11 +108,11 @@ class DistributionTestCase(support.TempdirManager, unittest.TestCase):
my_file
=
os
.
path
.
join
(
tmp_dir
,
'f'
)
klass
=
Distribution
dist
=
klass
(
attrs
=
{
'author'
:
u'Mister Caf'
,
dist
=
klass
(
attrs
=
{
'author'
:
u'Mister Caf
é
'
,
'name'
:
'my.package'
,
'maintainer'
:
u'Caf Junior'
,
'description'
:
u'Caf
torrfi
'
,
'long_description'
:
u'H
hh
'
})
'maintainer'
:
u'Caf
é
Junior'
,
'description'
:
u'Caf
é torréfié
'
,
'long_description'
:
u'H
éhéhé
'
})
# let's make sure the file can be written
...
...
@@ -151,6 +153,49 @@ class DistributionTestCase(support.TempdirManager, unittest.TestCase):
self
.
assertEquals
(
len
(
warns
),
0
)
def
test_finalize_options
(
self
):
attrs
=
{
'keywords'
:
'one,two'
,
'platforms'
:
'one,two'
}
dist
=
Distribution
(
attrs
=
attrs
)
dist
.
finalize_options
()
# finalize_option splits platforms and keywords
self
.
assertEquals
(
dist
.
metadata
.
platforms
,
[
'one'
,
'two'
])
self
.
assertEquals
(
dist
.
metadata
.
keywords
,
[
'one'
,
'two'
])
def
test_show_help
(
self
):
class
FancyGetopt
(
object
):
def
__init__
(
self
):
self
.
count
=
0
def
set_option_table
(
self
,
*
args
):
pass
def
print_help
(
self
,
*
args
):
self
.
count
+=
1
parser
=
FancyGetopt
()
dist
=
Distribution
()
dist
.
commands
=
[
'sdist'
]
dist
.
script_name
=
'setup.py'
dist
.
_show_help
(
parser
)
self
.
assertEquals
(
parser
.
count
,
3
)
def
test_get_command_packages
(
self
):
dist
=
Distribution
()
self
.
assertEquals
(
dist
.
command_packages
,
None
)
cmds
=
dist
.
get_command_packages
()
self
.
assertEquals
(
cmds
,
[
'distutils.command'
])
self
.
assertEquals
(
dist
.
command_packages
,
[
'distutils.command'
])
dist
.
command_packages
=
'one,two'
cmds
=
dist
.
get_command_packages
()
self
.
assertEquals
(
cmds
,
[
'distutils.command'
,
'one'
,
'two'
])
class
MetadataTestCase
(
support
.
TempdirManager
,
support
.
EnvironGuard
,
unittest
.
TestCase
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment