Current Path: > > lib64 > python3.8 > distutils
Operation : Linux premium107.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 198.54.126.246 | Your IP: 216.73.216.181 Domains : 1034 Domain(s) Permission : [ 0755 ]
| Name | Type | Size | Last Modified | Actions |
|---|---|---|---|---|
| __pycache__ | Directory | - | - | |
| command | Directory | - | - | |
| README | File | 242 bytes | June 06 2023 13:32:21. | |
| __init__.py | File | 236 bytes | June 06 2023 13:32:21. | |
| _msvccompiler.py | File | 20050 bytes | June 06 2023 13:32:21. | |
| archive_util.py | File | 8572 bytes | June 06 2023 13:32:21. | |
| bcppcompiler.py | File | 14935 bytes | June 06 2023 13:32:21. | |
| ccompiler.py | File | 47433 bytes | June 06 2023 13:32:21. | |
| cmd.py | File | 18079 bytes | June 06 2023 13:32:21. | |
| config.py | File | 4827 bytes | June 06 2023 13:32:21. | |
| core.py | File | 8876 bytes | June 06 2023 13:32:21. | |
| cygwinccompiler.py | File | 16478 bytes | June 06 2023 13:32:21. | |
| debug.py | File | 139 bytes | June 06 2023 13:32:21. | |
| dep_util.py | File | 3491 bytes | June 06 2023 13:32:21. | |
| dir_util.py | File | 7778 bytes | June 06 2023 13:32:21. | |
| dist.py | File | 50385 bytes | June 06 2023 13:32:21. | |
| errors.py | File | 3577 bytes | June 06 2023 13:32:21. | |
| extension.py | File | 10515 bytes | June 06 2023 13:32:21. | |
| fancy_getopt.py | File | 17784 bytes | June 06 2023 13:32:21. | |
| file_util.py | File | 8148 bytes | June 06 2023 13:32:21. | |
| filelist.py | File | 12832 bytes | June 06 2023 13:32:21. | |
| log.py | File | 1969 bytes | June 06 2023 13:32:21. | |
| msvc9compiler.py | File | 30511 bytes | June 06 2023 13:32:21. | |
| msvccompiler.py | File | 23564 bytes | June 06 2023 13:32:21. | |
| spawn.py | File | 7843 bytes | June 06 2023 13:32:21. | |
| sysconfig.py | File | 20497 bytes | October 17 2023 18:12:55. | |
| text_file.py | File | 12483 bytes | June 06 2023 13:32:21. | |
| unixccompiler.py | File | 15254 bytes | October 17 2023 18:02:14. | |
| util.py | File | 20892 bytes | June 06 2023 13:32:21. | |
| version.py | File | 12345 bytes | June 06 2023 13:32:21. | |
| versionpredicate.py | File | 5133 bytes | June 06 2023 13:32:21. |
"""distutils.pypirc
Provides the PyPIRCCommand class, the base class for the command classes
that uses .pypirc in the distutils.command package.
"""
import os
from configparser import RawConfigParser
from distutils.cmd import Command
DEFAULT_PYPIRC = """\
[distutils]
index-servers =
pypi
[pypi]
username:%s
password:%s
"""
class PyPIRCCommand(Command):
"""Base command that knows how to handle the .pypirc file
"""
DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/'
DEFAULT_REALM = 'pypi'
repository = None
realm = None
user_options = [
('repository=', 'r',
"url of repository [default: %s]" % \
DEFAULT_REPOSITORY),
('show-response', None,
'display full response text from server')]
boolean_options = ['show-response']
def _get_rc_file(self):
"""Returns rc file path."""
return os.path.join(os.path.expanduser('~'), '.pypirc')
def _store_pypirc(self, username, password):
"""Creates a default .pypirc file."""
rc = self._get_rc_file()
with os.fdopen(os.open(rc, os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f:
f.write(DEFAULT_PYPIRC % (username, password))
def _read_pypirc(self):
"""Reads the .pypirc file."""
rc = self._get_rc_file()
if os.path.exists(rc):
self.announce('Using PyPI login from %s' % rc)
repository = self.repository or self.DEFAULT_REPOSITORY
config = RawConfigParser()
config.read(rc)
sections = config.sections()
if 'distutils' in sections:
# let's get the list of servers
index_servers = config.get('distutils', 'index-servers')
_servers = [server.strip() for server in
index_servers.split('\n')
if server.strip() != '']
if _servers == []:
# nothing set, let's try to get the default pypi
if 'pypi' in sections:
_servers = ['pypi']
else:
# the file is not properly defined, returning
# an empty dict
return {}
for server in _servers:
current = {'server': server}
current['username'] = config.get(server, 'username')
# optional params
for key, default in (('repository',
self.DEFAULT_REPOSITORY),
('realm', self.DEFAULT_REALM),
('password', None)):
if config.has_option(server, key):
current[key] = config.get(server, key)
else:
current[key] = default
# work around people having "repository" for the "pypi"
# section of their config set to the HTTP (rather than
# HTTPS) URL
if (server == 'pypi' and
repository in (self.DEFAULT_REPOSITORY, 'pypi')):
current['repository'] = self.DEFAULT_REPOSITORY
return current
if (current['server'] == repository or
current['repository'] == repository):
return current
elif 'server-login' in sections:
# old format
server = 'server-login'
if config.has_option(server, 'repository'):
repository = config.get(server, 'repository')
else:
repository = self.DEFAULT_REPOSITORY
return {'username': config.get(server, 'username'),
'password': config.get(server, 'password'),
'repository': repository,
'server': server,
'realm': self.DEFAULT_REALM}
return {}
def _read_pypi_response(self, response):
"""Read and decode a PyPI HTTP response."""
import cgi
content_type = response.getheader('content-type', 'text/plain')
encoding = cgi.parse_header(content_type)[1].get('charset', 'ascii')
return response.read().decode(encoding)
def initialize_options(self):
"""Initialize options."""
self.repository = None
self.realm = None
self.show_response = 0
def finalize_options(self):
"""Finalizes options."""
if self.repository is None:
self.repository = self.DEFAULT_REPOSITORY
if self.realm is None:
self.realm = self.DEFAULT_REALM
SILENT KILLER Tool