예제 #1
0
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("")
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
파일: search.py 프로젝트: michaeta/pip
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
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)
예제 #10
0
    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
예제 #11
0
파일: search.py 프로젝트: markpasc/pip
 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
예제 #12
0
 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)
예제 #13
0
 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)
예제 #14
0
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
예제 #15
0
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("")
예제 #16
0
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("")
예제 #17
0
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):
예제 #18
0
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("")
예제 #19
0
 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)