def main(): parser = OptionParser() parser.add_option("--dry-run", action="store_true", dest="dryrun", default=False, help="display only the pip commands and do nothing.") parser.add_option("--verbose", action="store_true", dest="verbose", default=False, help="Turn on pip verbose mode") parser.add_option("--log", action="store", dest="logfile", default="upgrade_virtualenv.log", help="Log file where complete pip output will be kept") options, args = parser.parse_args() #print options, args check_activation() check_pip_version() print_options(options) packages, editables = get_upgradeable() print("") print((c.colorize("Witch local virtualenv packages would you like to upgrade?", opts=("underscore",)))) print("") print("(1) both: package + editables") print("(2) only packages") print("(3) only editables") print((c.colorize("\nWarning:", foreground="red") + " Start update only, if editables was detected successful!")) print("\tMore info: https://github.com/pypa/pip/issues/319") try: choice = input("\nPlease select (1/2/3):") except KeyboardInterrupt: print("") sys.exit() if choice not in ("1", "2", "3"): print((c.colorize("Abort, ok.", foreground="blue"))) sys.exit() if choice in ("1", "2"): for package in packages: call_pip(options, package) if choice in ("1", "3"): for editable in editables: call_pip(options, "--editable", editable) print(("-"*get_terminal_size()[0])) print("") if choice == "1": print((c.colorize("Done, all packages + editables are updated.", foreground="blue"))) elif choice == "2": print((c.colorize("Done, Packages, but not the editables are updated.", foreground="blue"))) elif choice == "3": print((c.colorize("Done, editables, but not normal packages are updated.", foreground="blue"))) print("")
def do_version_info(options): """ List all installed packages with his versions and version info from PyPi """ local_only = True # exclude globally-installed packages in a virtualenv dependency_links = [] for dist in pkg_resources.working_set: if dist.has_metadata('dependency_links.txt'): dependency_links.extend( dist.get_metadata_lines('dependency_links.txt'), ) installed_info = [] for dist in get_installed_distributions(local_only=local_only): req = dist.as_requirement() # pkg_resources.Requirement() instance project_name = req.project_name specs = req.specs version = specs[0][1] installed_info.append((project_name, version)) max_name_len = max([len(i[0]) for i in installed_info]) max_ver_len = max([len(i[1]) for i in installed_info]) if max_name_len<20: max_name_len = 20 if max_ver_len<20: max_ver_len = 20 max_len_others = get_terminal_size()[0] - max_name_len - max_ver_len - 7 table_header = " package name".ljust(max_name_len) table_header += " installed version".ljust(max_ver_len) table_header += " versions on PyPi".ljust(max_len_others) print c.colorize(table_header, opts=("underscore",)) for project_name, version in installed_info: print project_name.ljust(max_name_len), print version.ljust(max_ver_len), # http://wiki.python.org/moin/PyPiXmlRpc client = xmlrpclib.ServerProxy(INDEX_URL) versions = client.package_releases(project_name) if not versions: print c.colorize("No version found at PyPi!", foreground="yellow") else: latest = highest_version(versions) older_versions = [v for v in versions if latest!=v] pypi_info = "%s" % latest if older_versions: pypi_info += " - %s" % ", ".join(older_versions) if len(pypi_info)>max_len_others: pypi_info = pypi_info[:max_len_others] + " ..." print pypi_info
def call_pip(options, pip_args): """ call pip with 'pip_args' """ pip_executeable = os.path.join(locations.bin_py, "pip") cmd = [pip_executeable] cmd += pip_args print("_" * get_terminal_size()[0]) print(c.colorize(" ".join(cmd), foreground="blue")) if not options.dryrun: subprocess.call(cmd)
def call_pip(options, *args): pip_executable = os.path.join(locations.bin_py, "pip") cmd = [pip_executable, "install", "--upgrade"] if options.verbose: cmd.append("--verbose") if options.logfile: cmd.append("--log=%s" % options.logfile) cmd += args print(("-" * get_terminal_size()[0])) print(("run: %s" % c.colorize(" ".join(cmd), foreground="blue"))) if not options.dryrun: subprocess.call(cmd)
def call_pip(options, *args): pip_executable = os.path.join(locations.bin_py, "pip") cmd = [pip_executable, "install", "--upgrade"] if options.verbose: cmd.append("--verbose") if options.logfile: cmd.append("--log=%s" % options.logfile) cmd += args print(("-"*get_terminal_size()[0])) print(("run: %s" % c.colorize(" ".join(cmd), foreground="blue"))) if not options.dryrun: subprocess.call(cmd)
def run(self, options, args): if not args: raise CommandError('Missing required argument (search query).') query = args index_url = options.index pypi_hits = self.search(query, index_url) hits = transform_hits(pypi_hits) terminal_width = None if sys.stdout.isatty(): terminal_width = get_terminal_size()[0] print_results(hits, terminal_width=terminal_width)
def run(self, options, args): if not args: logger.warn('ERROR: Missing required argument (search query).') return query = args index_url = options.index pypi_hits = self.search(query, index_url) hits = transform_hits(pypi_hits) terminal_width = None if sys.stdout.isatty(): terminal_width = get_terminal_size()[0] print_results(hits, terminal_width=terminal_width)
def run(self, options, args): if not args: logger.warn('ERROR: Missing required argument (search query).') return query = ' '.join(args) index_url = options.index pypi_hits = self.search(query, index_url) hits = transform_hits(pypi_hits) terminal_width = None if sys.stdout.isatty(): terminal_width = get_terminal_size()[0] print_results(hits, terminal_width=terminal_width)
def call_pip(options, *args): pip_executeable = os.path.join(locations.bin_py, "pip") cmd = [ pip_executeable, "install", "--upgrade", "--no-dependencies", "--download-cache=%s" % options.download_cache ] if options.verbose: cmd.append("--verbose") if options.logfile: cmd.append("--log=%s" % options.logfile) cmd += args print("_" * get_terminal_size()[0]) print(c.colorize(" ".join(cmd), foreground="blue")) if not options.dryrun: subprocess.call(cmd)
def run(self, options, args): if not args: raise CommandError('Missing required argument (search query).') query = args index_url = options.index pypi_hits = self.search(query, index_url) hits = transform_hits(pypi_hits) terminal_width = None if sys.stdout.isatty(): terminal_width = get_terminal_size()[0] print_results(hits, terminal_width=terminal_width) if pypi_hits: return SUCCESS return NO_MATCHES_FOUND
def _print_results(self, hits, name_column_width=25): installed_packages = [p.project_name for p in pkg_resources.working_set] terminal_size = get_terminal_size() terminal_width = terminal_size[0] for hit in hits: name = hit['name'] summary = hit['summary'] or '' summary = textwrap.wrap(summary, terminal_width - name_column_width - 5) installed = name in installed_packages if installed: flag = 'i' else: flag = 'n' line = '%s %s - %s' % ( flag, name.ljust(name_column_width), ('\n' + ' ' * (name_column_width + 5)).join(summary), ) print line
def __init__(self, *args, **kwargs): # help position must be aligned with __init__.parseopts.description kwargs['max_help_position'] = 30 kwargs['indent_increment'] = 1 kwargs['width'] = get_terminal_size()[0] - 2 optparse.IndentedHelpFormatter.__init__(self, *args, **kwargs)
from django_phpBB3.hashers import PhpBB3PasswordHasher from django_phpBB3.models import Attachment as phpbb_Attachment from django_phpBB3.models import Forum as phpbb_Forum from django_phpBB3.models import Group as phpbb_Group from django_phpBB3.models import Post as phpbb_Post from django_phpBB3.models import Topic as phpbb_Topic from django_phpBB3.models import User as phpbb_User from django_phpBB3.unsupported_models import get_topic_watch from django_phpBB3.utils import ProcessInfo, human_duration try: from pip.util import get_terminal_size except ImportError: TERMINAL_WIDTH = 79 else: TERMINAL_WIDTH = get_terminal_size()[0] - 1 try: import pudb as debugger # http://pypi.python.org/pypi/pudb except ImportError: import pdb as debugger OUT_ENCODING = sys.stdout.encoding or sys.getfilesystemencoding() PHPBB_PASSWORD = "******" % PhpBB3PasswordHasher.algorithm def disable_auto_fields(model_class): """ Hack: It's needed to disable "auto_now_add" to set a old datetime
def main(): parser = OptionParser() parser.add_option("-t", "--env_type", type="string", dest="env_type", default=None, help="PyLucid env install type: %s" % ", ".join(CHOICES.keys()) ) parser.add_option("--dry-run", action="store_true", dest="dryrun", default=False, help="display only the pip commands and do nothing.") parser.add_option("--verbose", action="store_true", dest="verbose", default=False, help="Turn on pip verbose mode") parser.add_option("--log", action="store", dest="logfile", default="upgrade_pylucid_env.log", help="Log file where complete pip output will be kept") parser.add_option("--download-cache", action="store", dest="download_cache", default=os.path.join(sys.prefix, "pypi_cache"), help="Cache downloaded packages in DIR") parser.add_option("--version-info", action="store_true", dest="version_info", default=False, help="Display version info of all packages.") options, args = parser.parse_args() # print options, args if options.version_info: do_version_info(options) sys.exit() if not options.env_type: print(c.colorize("\nError: No env type given!\n", foreground="red", opts=("bold",))) parser.print_help() sys.exit(-1) try: filename = CHOICES[options.env_type] except KeyError: print(c.colorize("\nError: Wrong env type!\n", foreground="red", opts=("bold",))) parser.print_help() sys.exit(-1) check_activation() check_pip_version() print_options(options) requirements = select_requirement(options, filename) if len(requirements) == 0: print "Nothing to upgrade, abort." sys.exit() try: input = raw_input("\nStart upgrade (y/n) ?") except KeyboardInterrupt: print(c.colorize("Abort, ok.", foreground="blue")) sys.exit() if input.lower() not in ("y", "j"): print(c.colorize("Abort, ok.", foreground="blue")) sys.exit() do_upgrade(options, requirements) print("-"*get_terminal_size()[0]) print("") print(c.colorize("PyLucid virtual environment updated.", foreground="blue")) if options.dryrun: print("dry-run: nothing changes.") else: print("Look into %s for more information." % options.logfile) print("")
def main(): parser = OptionParser() parser.add_option("--dry-run", action="store_true", dest="dryrun", default=False, help="display only the pip commands and do nothing.") parser.add_option("--verbose", action="store_true", dest="verbose", default=False, help="Turn on pip verbose mode") parser.add_option("--log", action="store", dest="logfile", default="upgrade_virtualenv.log", help="Log file where complete pip output will be kept") options, args = parser.parse_args() #print options, args check_activation() check_pip_version() print_options(options) packages, editables = get_upgradeable() print("") print((c.colorize( "Witch local virtualenv packages would you like to upgrade?", opts=("underscore", )))) print("") print("(1) both: package + editables") print("(2) only packages") print("(3) only editables") print((c.colorize("\nWarning:", foreground="red") + " Start update only, if editables was detected successful!")) print("\tMore info: https://github.com/pypa/pip/issues/319") try: choice = input("\nPlease select (1/2/3):") except KeyboardInterrupt: print("") sys.exit() if choice not in ("1", "2", "3"): print((c.colorize("Abort, ok.", foreground="blue"))) sys.exit() if choice in ("1", "2"): for package in packages: call_pip(options, package) if choice in ("1", "3"): for editable in editables: call_pip(options, "--editable", editable) print(("-" * get_terminal_size()[0])) print("") if choice == "1": print((c.colorize("Done, all packages + editables are updated.", foreground="blue"))) elif choice == "2": print((c.colorize("Done, Packages, but not the editables are updated.", foreground="blue"))) elif choice == "3": print((c.colorize( "Done, editables, but not normal packages are updated.", foreground="blue"))) print("")
from django_phpBB3.hashers import PhpBB3PasswordHasher from django_phpBB3.models import Attachment as phpbb_Attachment from django_phpBB3.models import Forum as phpbb_Forum from django_phpBB3.models import Group as phpbb_Group from django_phpBB3.models import Post as phpbb_Post from django_phpBB3.models import Topic as phpbb_Topic from django_phpBB3.models import User as phpbb_User from django_phpBB3.unsupported_models import get_topic_watch from django_phpBB3.utils import ProcessInfo, human_duration try: from pip.util import get_terminal_size except ImportError: TERMINAL_WIDTH = 79 else: TERMINAL_WIDTH = get_terminal_size()[0] - 1 try: import pudb as debugger # http://pypi.python.org/pypi/pudb except ImportError: import pdb as debugger OUT_ENCODING = sys.stdout.encoding or sys.getfilesystemencoding() PHPBB_PASSWORD = "******" % PhpBB3PasswordHasher.algorithm def disable_auto_fields(model_class):
def main(): parser = OptionParser() parser.add_option("-t", "--env_type", type="string", dest="env_type", default=None, help="PyLucid env install type: %s" % ", ".join(CHOICES.keys()) ) parser.add_option("--dry-run", action="store_true", dest="dryrun", default=False, help="display only the pip commands and do nothing.") parser.add_option("--verbose", action="store_true", dest="verbose", default=False, help="Turn on pip verbose mode") parser.add_option("--log", action="store", dest="logfile", default="upgrade_pylucid_env.log", help="Log file where complete pip output will be kept") parser.add_option("--download-cache", action="store", dest="download_cache", default=os.path.join(sys.prefix, "pypi_cache"), help="Cache downloaded packages in DIR") options, args = parser.parse_args() # print options, args if not options.env_type: print(c.colorize("\nError: No env type given!\n", foreground="red", opts=("bold",))) parser.print_help() sys.exit(-1) try: filename = CHOICES[options.env_type] except KeyError: print(c.colorize("\nError: Wrong env type!\n", foreground="red", opts=("bold",))) parser.print_help() sys.exit(-1) check_activation() check_pip_version() print_options(options) requirements = select_requirement(options, filename) if len(requirements) == 0: print "Nothing to upgrade, abort." sys.exit() try: input = raw_input("\nStart upgrade (y/n) ?") except KeyboardInterrupt: print(c.colorize("Abort, ok.", foreground="blue")) sys.exit() if input.lower() not in ("y", "j"): print(c.colorize("Abort, ok.", foreground="blue")) sys.exit() do_upgrade(options, requirements) print("-"*get_terminal_size()[0]) print("") print(c.colorize("PyLucid virtual environment updated.", foreground="blue")) if options.dryrun: print("dry-run: nothing changes.") else: print("Look into %s for more information." % options.logfile) print("")
def __init__(self, *args, **kwargs): kwargs['max_help_position'] = 30 kwargs['indent_increment'] = 1 kwargs['width'] = get_terminal_size()[0] - 2 optparse.IndentedHelpFormatter.__init__(self, *args, **kwargs)