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
aac5c866
Kaydet (Commit)
aac5c866
authored
May 11, 2008
tarafından
Andrew M. Kuchling
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
#1858: re-apply patch for this, adding the missing files
üst
6c02916d
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
296 additions
and
84 deletions
+296
-84
packageindex.rst
Doc/distutils/packageindex.rst
+30
-1
uploading.rst
Doc/distutils/uploading.rst
+9
-3
register.py
Lib/distutils/command/register.py
+49
-48
upload.py
Lib/distutils/command/upload.py
+13
-28
core.py
Lib/distutils/core.py
+1
-0
dist.py
Lib/distutils/dist.py
+3
-4
test_config.py
Lib/distutils/tests/test_config.py
+105
-0
test_dist.py
Lib/distutils/tests/test_dist.py
+46
-0
test_upload.py
Lib/distutils/tests/test_upload.py
+34
-0
ACKS
Misc/ACKS
+1
-0
NEWS
Misc/NEWS
+5
-0
No files found.
Doc/distutils/packageindex.rst
Dosyayı görüntüle @
aac5c866
...
@@ -55,11 +55,40 @@ The .pypirc file
...
@@ -55,11 +55,40 @@ The .pypirc file
The format of the :file:`.pypirc` file is as follows::
The format of the :file:`.pypirc` file is as follows::
[server-login]
[distutils]
index-servers =
pypi
[pypi]
repository: <repository-url>
repository: <repository-url>
username: <username>
username: <username>
password: <password>
password: <password>
*repository* can be omitted and defaults to ``http://www.python.org/pypi``.
*repository* can be omitted and defaults to ``http://www.python.org/pypi``.
If you want to define another server a new section can be created::
[distutils]
index-servers =
pypi
other
[pypi]
repository: <repository-url>
username: <username>
password: <password>
[other]
repository: http://example.com/pypi
username: <username>
password: <password>
The command can then be called with the -r option::
python setup.py register -r http://example.com/pypi
Or even with the section name::
python setup.py register -r other
Doc/distutils/uploading.rst
Dosyayı görüntüle @
aac5c866
...
@@ -24,14 +24,20 @@ The :command:`upload` command uses the username, password, and repository URL
...
@@ -24,14 +24,20 @@ The :command:`upload` command uses the username, password, and repository URL
from
the
:
file
:`$
HOME
/.
pypirc
`
file
(
see
section
:
ref
:`
pypirc
`
for
more
on
this
from
the
:
file
:`$
HOME
/.
pypirc
`
file
(
see
section
:
ref
:`
pypirc
`
for
more
on
this
file
).
file
).
You
can
specify
another
PyPI
server
with
the
:
option
:`--
repository
=*
url
*`
option
::
python
setup
.
py
sdist
bdist_wininst
upload
-
r
http
://
example
.
com
/
pypi
See
section
:
ref
:`
pypirc
`
for
more
on
defining
several
servers
.
You
can
use
the
:
option
:`--
sign
`
option
to
tell
:
command
:`
upload
`
to
sign
each
You
can
use
the
:
option
:`--
sign
`
option
to
tell
:
command
:`
upload
`
to
sign
each
uploaded
file
using
GPG
(
GNU
Privacy
Guard
).
The
:
program
:`
gpg
`
program
must
uploaded
file
using
GPG
(
GNU
Privacy
Guard
).
The
:
program
:`
gpg
`
program
must
be
available
for
execution
on
the
system
:
envvar
:`
PATH
`.
You
can
also
specify
be
available
for
execution
on
the
system
:
envvar
:`
PATH
`.
You
can
also
specify
which
key
to
use
for
signing
using
the
:
option
:`--
identity
=*
name
*`
option
.
which
key
to
use
for
signing
using
the
:
option
:`--
identity
=*
name
*`
option
.
Other
:
command
:`
upload
`
options
include
:
option
:`--
repository
=*
url
*`
(
which
Other
:
command
:`
upload
`
options
include
:
option
:`--
repository
=*
url
*`
lets
you
override
the
repository
setting
from
:
file
:`$
HOME
/.
pypirc
`),
and
or
:
option
:`--
repository
=*
section
*`
where
`
url
`
is
the
url
of
the
server
and
`
section
`
the
name
of
the
section
in
:
file
:`$
HOME
/.
pypirc
`,
and
:
option
:`--
show
-
response
`
(
which
displays
the
full
response
text
from
the
PyPI
:
option
:`--
show
-
response
`
(
which
displays
the
full
response
text
from
the
PyPI
server
for
help
in
debugging
upload
problems
).
server
for
help
in
debugging
upload
problems
).
Lib/distutils/command/register.py
Dosyayı görüntüle @
aac5c866
...
@@ -8,37 +8,29 @@ Implements the Distutils 'register' command (register with the repository).
...
@@ -8,37 +8,29 @@ Implements the Distutils 'register' command (register with the repository).
__revision__
=
"$Id$"
__revision__
=
"$Id$"
import
os
,
string
,
urllib2
,
getpass
,
urlparse
import
os
,
string
,
urllib2
,
getpass
,
urlparse
import
StringIO
,
ConfigParser
import
StringIO
from
distutils.core
import
Command
from
distutils.core
import
PyPIRC
Command
from
distutils.errors
import
*
from
distutils.errors
import
*
from
distutils
import
log
class
register
(
Command
):
class
register
(
PyPIRC
Command
):
description
=
(
"register the distribution with the Python package index"
)
description
=
(
"register the distribution with the Python package index"
)
user_options
=
PyPIRCCommand
.
user_options
+
[
DEFAULT_REPOSITORY
=
'http://pypi.python.org/pypi'
user_options
=
[
(
'repository='
,
'r'
,
"url of repository [default:
%
s]"
%
DEFAULT_REPOSITORY
),
(
'list-classifiers'
,
None
,
(
'list-classifiers'
,
None
,
'list the valid Trove classifiers'
),
'list the valid Trove classifiers'
),
(
'show-response'
,
None
,
'display full response text from server'
),
]
]
boolean_options
=
[
'verify'
,
'show-response'
,
'list-classifiers'
]
boolean_options
=
PyPIRCCommand
.
boolean_options
+
[
'verify'
,
'list-classifiers'
]
def
initialize_options
(
self
):
def
initialize_options
(
self
):
self
.
repository
=
None
PyPIRCCommand
.
initialize_options
(
self
)
self
.
show_response
=
0
self
.
list_classifiers
=
0
self
.
list_classifiers
=
0
def
finalize_options
(
self
):
if
self
.
repository
is
None
:
self
.
repository
=
self
.
DEFAULT_REPOSITORY
def
run
(
self
):
def
run
(
self
):
self
.
finalize_options
()
self
.
_set_config
()
self
.
check_metadata
()
self
.
check_metadata
()
if
self
.
dry_run
:
if
self
.
dry_run
:
self
.
verify_metadata
()
self
.
verify_metadata
()
...
@@ -77,6 +69,23 @@ class register(Command):
...
@@ -77,6 +69,23 @@ class register(Command):
"or (maintainer and maintainer_email) "
+
"or (maintainer and maintainer_email) "
+
"must be supplied"
)
"must be supplied"
)
def
_set_config
(
self
):
''' Reads the configuration file and set attributes.
'''
config
=
self
.
_read_pypirc
()
if
config
!=
{}:
self
.
username
=
config
[
'username'
]
self
.
password
=
config
[
'password'
]
self
.
repository
=
config
[
'repository'
]
self
.
realm
=
config
[
'realm'
]
self
.
has_config
=
True
else
:
if
self
.
repository
not
in
(
'pypi'
,
self
.
DEFAULT_REPOSITORY
):
raise
ValueError
(
'
%
s not found in .pypirc'
%
self
.
repository
)
if
self
.
repository
==
'pypi'
:
self
.
repository
=
self
.
DEFAULT_REPOSITORY
self
.
has_config
=
False
def
classifiers
(
self
):
def
classifiers
(
self
):
''' Fetch the list of classifiers from the server.
''' Fetch the list of classifiers from the server.
'''
'''
...
@@ -90,6 +99,7 @@ class register(Command):
...
@@ -90,6 +99,7 @@ class register(Command):
(
code
,
result
)
=
self
.
post_to_server
(
self
.
build_post_data
(
'verify'
))
(
code
,
result
)
=
self
.
post_to_server
(
self
.
build_post_data
(
'verify'
))
print
'Server response (
%
s):
%
s'
%
(
code
,
result
)
print
'Server response (
%
s):
%
s'
%
(
code
,
result
)
def
send_metadata
(
self
):
def
send_metadata
(
self
):
''' Send the metadata to the package index server.
''' Send the metadata to the package index server.
...
@@ -99,10 +109,14 @@ class register(Command):
...
@@ -99,10 +109,14 @@ class register(Command):
First we try to read the username/password from $HOME/.pypirc,
First we try to read the username/password from $HOME/.pypirc,
which is a ConfigParser-formatted file with a section
which is a ConfigParser-formatted file with a section
[
server-login
] containing username and password entries (both
[
distutils
] containing username and password entries (both
in clear text). Eg:
in clear text). Eg:
[server-login]
[distutils]
index-servers =
pypi
[pypi]
username: fred
username: fred
password: sekrit
password: sekrit
...
@@ -114,21 +128,15 @@ class register(Command):
...
@@ -114,21 +128,15 @@ class register(Command):
3. set the password to a random string and email the user.
3. set the password to a random string and email the user.
'''
'''
choice
=
'x'
username
=
password
=
''
# see if we can short-cut and get the username/password from the
# see if we can short-cut and get the username/password from the
# config
# config
config
=
None
if
self
.
has_config
:
if
'HOME'
in
os
.
environ
:
choice
=
'1'
rc
=
os
.
path
.
join
(
os
.
environ
[
'HOME'
],
'.pypirc'
)
username
=
self
.
username
if
os
.
path
.
exists
(
rc
):
password
=
self
.
password
print
'Using PyPI login from
%
s'
%
rc
else
:
config
=
ConfigParser
.
ConfigParser
()
choice
=
'x'
config
.
read
(
rc
)
username
=
password
=
''
username
=
config
.
get
(
'server-login'
,
'username'
)
password
=
config
.
get
(
'server-login'
,
'password'
)
choice
=
'1'
# get the user's login info
# get the user's login info
choices
=
'1 2 3 4'
.
split
()
choices
=
'1 2 3 4'
.
split
()
...
@@ -155,32 +163,24 @@ Your selection [default 1]: ''',
...
@@ -155,32 +163,24 @@ Your selection [default 1]: ''',
# set up the authentication
# set up the authentication
auth
=
urllib2
.
HTTPPasswordMgr
()
auth
=
urllib2
.
HTTPPasswordMgr
()
host
=
urlparse
.
urlparse
(
self
.
repository
)[
1
]
host
=
urlparse
.
urlparse
(
self
.
repository
)[
1
]
auth
.
add_password
(
'pypi'
,
host
,
username
,
password
)
auth
.
add_password
(
self
.
realm
,
host
,
username
,
password
)
# send the info to the server and report the result
# send the info to the server and report the result
code
,
result
=
self
.
post_to_server
(
self
.
build_post_data
(
'submit'
),
code
,
result
=
self
.
post_to_server
(
self
.
build_post_data
(
'submit'
),
auth
)
auth
)
print
'Server response (
%
s):
%
s'
%
(
code
,
result
)
print
'Server response (
%
s):
%
s'
%
(
code
,
result
)
# possibly save the login
# possibly save the login
if
'HOME'
in
os
.
environ
and
config
is
None
and
code
==
200
:
if
not
self
.
has_config
and
code
==
200
:
rc
=
os
.
path
.
join
(
os
.
environ
[
'HOME'
],
'.pypirc'
)
print
'I can store your PyPI login so future submissions will be faster.'
print
'I can store your PyPI login so future submissions will be faster.'
print
'(the login will be stored in
%
s)'
%
rc
print
'(the login will be stored in
%
s)'
%
self
.
_get_rc_file
()
choice
=
'X'
choice
=
'X'
while
choice
.
lower
()
not
in
'yn'
:
while
choice
.
lower
()
not
in
'yn'
:
choice
=
raw_input
(
'Save your login (y/N)?'
)
choice
=
raw_input
(
'Save your login (y/N)?'
)
if
not
choice
:
if
not
choice
:
choice
=
'n'
choice
=
'n'
if
choice
.
lower
()
==
'y'
:
if
choice
.
lower
()
==
'y'
:
f
=
open
(
rc
,
'w'
)
self
.
_store_pypirc
(
username
,
password
)
f
.
write
(
'[server-login]
\n
username:
%
s
\n
password:
%
s
\n
'
%
(
username
,
password
))
f
.
close
()
try
:
os
.
chmod
(
rc
,
0600
)
except
:
pass
elif
choice
==
'2'
:
elif
choice
==
'2'
:
data
=
{
':action'
:
'user'
}
data
=
{
':action'
:
'user'
}
data
[
'name'
]
=
data
[
'password'
]
=
data
[
'email'
]
=
''
data
[
'name'
]
=
data
[
'password'
]
=
data
[
'email'
]
=
''
...
@@ -243,7 +243,8 @@ Your selection [default 1]: ''',
...
@@ -243,7 +243,8 @@ Your selection [default 1]: ''',
def
post_to_server
(
self
,
data
,
auth
=
None
):
def
post_to_server
(
self
,
data
,
auth
=
None
):
''' Post a query to the server, and return a string response.
''' Post a query to the server, and return a string response.
'''
'''
self
.
announce
(
'Registering
%
s to
%
s'
%
(
data
[
'name'
],
self
.
repository
),
log
.
INFO
)
# Build up the MIME payload for the urllib2 POST data
# Build up the MIME payload for the urllib2 POST data
boundary
=
'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
boundary
=
'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
sep_boundary
=
'
\n
--'
+
boundary
sep_boundary
=
'
\n
--'
+
boundary
...
...
Lib/distutils/command/upload.py
Dosyayı görüntüle @
aac5c866
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
from
distutils.errors
import
*
from
distutils.errors
import
*
from
distutils.core
import
Command
from
distutils.core
import
PyPIRC
Command
from
distutils.spawn
import
spawn
from
distutils.spawn
import
spawn
from
distutils
import
log
from
distutils
import
log
from
hashlib
import
md5
from
hashlib
import
md5
...
@@ -16,53 +16,38 @@ import base64
...
@@ -16,53 +16,38 @@ import base64
import
urlparse
import
urlparse
import
cStringIO
as
StringIO
import
cStringIO
as
StringIO
class
upload
(
Command
):
class
upload
(
PyPIRC
Command
):
description
=
"upload binary package to PyPI"
description
=
"upload binary package to PyPI"
DEFAULT_REPOSITORY
=
'http://pypi.python.org/pypi'
user_options
=
PyPIRCCommand
.
user_options
+
[
user_options
=
[
(
'repository='
,
'r'
,
"url of repository [default:
%
s]"
%
DEFAULT_REPOSITORY
),
(
'show-response'
,
None
,
'display full response text from server'
),
(
'sign'
,
's'
,
(
'sign'
,
's'
,
'sign files to upload using gpg'
),
'sign files to upload using gpg'
),
(
'identity='
,
'i'
,
'GPG identity used to sign files'
),
(
'identity='
,
'i'
,
'GPG identity used to sign files'
),
]
]
boolean_options
=
[
'show-response'
,
'sign'
]
boolean_options
=
PyPIRCCommand
.
boolean_options
+
[
'sign'
]
def
initialize_options
(
self
):
def
initialize_options
(
self
):
PyPIRCCommand
.
initialize_options
(
self
)
self
.
username
=
''
self
.
username
=
''
self
.
password
=
''
self
.
password
=
''
self
.
repository
=
''
self
.
show_response
=
0
self
.
show_response
=
0
self
.
sign
=
False
self
.
sign
=
False
self
.
identity
=
None
self
.
identity
=
None
def
finalize_options
(
self
):
def
finalize_options
(
self
):
PyPIRCCommand
.
finalize_options
(
self
)
if
self
.
identity
and
not
self
.
sign
:
if
self
.
identity
and
not
self
.
sign
:
raise
DistutilsOptionError
(
raise
DistutilsOptionError
(
"Must use --sign for --identity to have meaning"
"Must use --sign for --identity to have meaning"
)
)
if
'HOME'
in
os
.
environ
:
config
=
self
.
_read_pypirc
()
rc
=
os
.
path
.
join
(
os
.
environ
[
'HOME'
],
'.pypirc'
)
if
config
!=
{}:
if
os
.
path
.
exists
(
rc
):
self
.
username
=
config
[
'username'
]
self
.
announce
(
'Using PyPI login from
%
s'
%
rc
)
self
.
password
=
config
[
'password'
]
config
=
ConfigParser
.
ConfigParser
({
self
.
repository
=
config
[
'repository'
]
'username'
:
''
,
self
.
realm
=
config
[
'realm'
]
'password'
:
''
,
'repository'
:
''
})
config
.
read
(
rc
)
if
not
self
.
repository
:
self
.
repository
=
config
.
get
(
'server-login'
,
'repository'
)
if
not
self
.
username
:
self
.
username
=
config
.
get
(
'server-login'
,
'username'
)
if
not
self
.
password
:
self
.
password
=
config
.
get
(
'server-login'
,
'password'
)
if
not
self
.
repository
:
self
.
repository
=
self
.
DEFAULT_REPOSITORY
def
run
(
self
):
def
run
(
self
):
if
not
self
.
distribution
.
dist_files
:
if
not
self
.
distribution
.
dist_files
:
...
...
Lib/distutils/core.py
Dosyayı görüntüle @
aac5c866
...
@@ -20,6 +20,7 @@ from distutils.util import grok_environment_error
...
@@ -20,6 +20,7 @@ from distutils.util import grok_environment_error
# Mainly import these so setup scripts can "from distutils.core import" them.
# Mainly import these so setup scripts can "from distutils.core import" them.
from
distutils.dist
import
Distribution
from
distutils.dist
import
Distribution
from
distutils.cmd
import
Command
from
distutils.cmd
import
Command
from
distutils.config
import
PyPIRCCommand
from
distutils.extension
import
Extension
from
distutils.extension
import
Extension
# This is a barebones help message generated displayed when the user
# This is a barebones help message generated displayed when the user
...
...
Lib/distutils/dist.py
Dosyayı görüntüle @
aac5c866
...
@@ -343,10 +343,9 @@ Common commands: (see '--help-commands' for more)
...
@@ -343,10 +343,9 @@ Common commands: (see '--help-commands' for more)
user_filename
=
"pydistutils.cfg"
user_filename
=
"pydistutils.cfg"
# And look for the user config file
# And look for the user config file
if
'HOME'
in
os
.
environ
:
user_file
=
os
.
path
.
join
(
os
.
path
.
expanduser
(
'~'
),
user_filename
)
user_file
=
os
.
path
.
join
(
os
.
environ
.
get
(
'HOME'
),
user_filename
)
if
os
.
path
.
isfile
(
user_file
):
if
os
.
path
.
isfile
(
user_file
):
files
.
append
(
user_file
)
files
.
append
(
user_file
)
# All platforms support local setup.cfg
# All platforms support local setup.cfg
local_file
=
"setup.cfg"
local_file
=
"setup.cfg"
...
...
Lib/distutils/tests/test_config.py
0 → 100644
Dosyayı görüntüle @
aac5c866
"""Tests for distutils.pypirc.pypirc."""
import
sys
import
os
import
unittest
from
distutils.core
import
PyPIRCCommand
from
distutils.core
import
Distribution
from
distutils.tests
import
support
PYPIRC
=
"""
\
[distutils]
index-servers =
server1
server2
[server1]
username:me
password:secret
[server2]
username:meagain
password: secret
realm:acme
repository:http://another.pypi/
"""
PYPIRC_OLD
=
"""
\
[server-login]
username:tarek
password:secret
"""
class
PyPIRCCommandTestCase
(
support
.
TempdirManager
,
unittest
.
TestCase
):
def
setUp
(
self
):
"""Patches the environment."""
if
os
.
environ
.
has_key
(
'HOME'
):
self
.
_old_home
=
os
.
environ
[
'HOME'
]
else
:
self
.
_old_home
=
None
curdir
=
os
.
path
.
dirname
(
__file__
)
os
.
environ
[
'HOME'
]
=
curdir
self
.
rc
=
os
.
path
.
join
(
curdir
,
'.pypirc'
)
self
.
dist
=
Distribution
()
class
command
(
PyPIRCCommand
):
def
__init__
(
self
,
dist
):
PyPIRCCommand
.
__init__
(
self
,
dist
)
def
initialize_options
(
self
):
pass
finalize_options
=
initialize_options
self
.
_cmd
=
command
def
tearDown
(
self
):
"""Removes the patch."""
if
self
.
_old_home
is
None
:
del
os
.
environ
[
'HOME'
]
else
:
os
.
environ
[
'HOME'
]
=
self
.
_old_home
if
os
.
path
.
exists
(
self
.
rc
):
os
.
remove
(
self
.
rc
)
def
test_server_registration
(
self
):
# This test makes sure PyPIRCCommand knows how to:
# 1. handle several sections in .pypirc
# 2. handle the old format
# new format
f
=
open
(
self
.
rc
,
'w'
)
try
:
f
.
write
(
PYPIRC
)
finally
:
f
.
close
()
cmd
=
self
.
_cmd
(
self
.
dist
)
config
=
cmd
.
_read_pypirc
()
config
=
config
.
items
()
config
.
sort
()
waited
=
[(
'password'
,
'secret'
),
(
'realm'
,
'pypi'
),
(
'repository'
,
'http://pypi.python.org/pypi'
),
(
'server'
,
'server1'
),
(
'username'
,
'me'
)]
self
.
assertEquals
(
config
,
waited
)
# old format
f
=
open
(
self
.
rc
,
'w'
)
f
.
write
(
PYPIRC_OLD
)
f
.
close
()
config
=
cmd
.
_read_pypirc
()
config
=
config
.
items
()
config
.
sort
()
waited
=
[(
'password'
,
'secret'
),
(
'realm'
,
'pypi'
),
(
'repository'
,
'http://pypi.python.org/pypi'
),
(
'server'
,
'server-login'
),
(
'username'
,
'tarek'
)]
self
.
assertEquals
(
config
,
waited
)
def
test_suite
():
return
unittest
.
makeSuite
(
PyPIRCCommandTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Lib/distutils/tests/test_dist.py
Dosyayı görüntüle @
aac5c866
...
@@ -55,6 +55,7 @@ class DistributionTestCase(unittest.TestCase):
...
@@ -55,6 +55,7 @@ class DistributionTestCase(unittest.TestCase):
self
.
assertEqual
(
d
.
get_command_packages
(),
[
"distutils.command"
])
self
.
assertEqual
(
d
.
get_command_packages
(),
[
"distutils.command"
])
def
test_command_packages_cmdline
(
self
):
def
test_command_packages_cmdline
(
self
):
from
distutils.tests.test_dist
import
test_dist
sys
.
argv
.
extend
([
"--command-packages"
,
sys
.
argv
.
extend
([
"--command-packages"
,
"foo.bar,distutils.tests"
,
"foo.bar,distutils.tests"
,
"test_dist"
,
"test_dist"
,
...
@@ -179,9 +180,54 @@ class MetadataTestCase(unittest.TestCase):
...
@@ -179,9 +180,54 @@ class MetadataTestCase(unittest.TestCase):
dist
.
metadata
.
write_pkg_file
(
sio
)
dist
.
metadata
.
write_pkg_file
(
sio
)
return
sio
.
getvalue
()
return
sio
.
getvalue
()
def
test_custom_pydistutils
(
self
):
# fixes #2166
# make sure pydistutils.cfg is found
old
=
{}
for
env
in
(
'HOME'
,
'HOMEPATH'
,
'HOMEDRIVE'
):
value
=
os
.
environ
.
get
(
env
)
old
[
env
]
=
value
if
value
is
not
None
:
del
os
.
environ
[
env
]
if
os
.
name
==
'posix'
:
user_filename
=
".pydistutils.cfg"
else
:
user_filename
=
"pydistutils.cfg"
curdir
=
os
.
path
.
dirname
(
__file__
)
user_filename
=
os
.
path
.
join
(
curdir
,
user_filename
)
f
=
open
(
user_filename
,
'w'
)
f
.
write
(
'.'
)
f
.
close
()
try
:
dist
=
distutils
.
dist
.
Distribution
()
# linux-style
if
sys
.
platform
in
(
'linux'
,
'darwin'
):
os
.
environ
[
'HOME'
]
=
curdir
files
=
dist
.
find_config_files
()
self
.
assert_
(
user_filename
in
files
)
# win32-style
if
sys
.
platform
==
'win32'
:
# home drive should be found
os
.
environ
[
'HOMEPATH'
]
=
curdir
files
=
dist
.
find_config_files
()
self
.
assert_
(
user_filename
in
files
)
finally
:
for
key
,
value
in
old
.
items
():
if
value
is
None
:
continue
os
.
environ
[
key
]
=
value
os
.
remove
(
user_filename
)
def
test_suite
():
def
test_suite
():
suite
=
unittest
.
TestSuite
()
suite
=
unittest
.
TestSuite
()
suite
.
addTest
(
unittest
.
makeSuite
(
DistributionTestCase
))
suite
.
addTest
(
unittest
.
makeSuite
(
DistributionTestCase
))
suite
.
addTest
(
unittest
.
makeSuite
(
MetadataTestCase
))
suite
.
addTest
(
unittest
.
makeSuite
(
MetadataTestCase
))
return
suite
return
suite
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Lib/distutils/tests/test_upload.py
0 → 100644
Dosyayı görüntüle @
aac5c866
"""Tests for distutils.command.upload."""
import
sys
import
os
import
unittest
from
distutils.command.upload
import
upload
from
distutils.core
import
Distribution
from
distutils.tests
import
support
from
distutils.tests.test_config
import
PYPIRC
,
PyPIRCCommandTestCase
class
uploadTestCase
(
PyPIRCCommandTestCase
):
def
test_finalize_options
(
self
):
# new format
f
=
open
(
self
.
rc
,
'w'
)
f
.
write
(
PYPIRC
)
f
.
close
()
dist
=
Distribution
()
cmd
=
upload
(
dist
)
cmd
.
finalize_options
()
for
attr
,
waited
in
((
'username'
,
'me'
),
(
'password'
,
'secret'
),
(
'realm'
,
'pypi'
),
(
'repository'
,
'http://pypi.python.org/pypi'
)):
self
.
assertEquals
(
getattr
(
cmd
,
attr
),
waited
)
def
test_suite
():
return
unittest
.
makeSuite
(
uploadTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Misc/ACKS
Dosyayı görüntüle @
aac5c866
...
@@ -758,3 +758,4 @@ Siebren van der Zee
...
@@ -758,3 +758,4 @@ Siebren van der Zee
Uwe Zessin
Uwe Zessin
Amaury Forgeot d'Arc
Amaury Forgeot d'Arc
Peter strand
Peter strand
Tarek Ziad
Misc/NEWS
Dosyayı görüntüle @
aac5c866
...
@@ -381,6 +381,11 @@ Library
...
@@ -381,6 +381,11 @@ Library
platforms when x is too large to fit into an IEEE 754 float; previously
platforms when x is too large to fit into an IEEE 754 float; previously
it only raised OverflowError on non IEEE 754 platforms.
it only raised OverflowError on non IEEE 754 platforms.
- Issues #2166, #1741 and #1531505: now distutils deals with HOME
correctly under win32
- #1858: distutils: added multiple server support in .pypirc
- Issue #1106316: pdb.post_mortem()'s parameter, "traceback", is now
- Issue #1106316: pdb.post_mortem()'s parameter, "traceback", is now
optional: it defaults to the traceback of the exception that is currently
optional: it defaults to the traceback of the exception that is currently
being handled (is mandatory to be in the middle of an exception, otherwise
being handled (is mandatory to be in the middle of an exception, otherwise
...
...
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