PHP 8.2.30
Preview: hash.py Size: 1.56 KB
/proc/thread-self/root/proc/thread-self/root/usr/lib/python2.7/site-packages/pip/commands/hash.py

from __future__ import absolute_import

import hashlib
import logging
import sys

from pip.basecommand import Command
from pip.status_codes import ERROR
from pip.utils import read_chunks
from pip.utils.hashes import FAVORITE_HASH, STRONG_HASHES


logger = logging.getLogger(__name__)


class HashCommand(Command):
    """
    Compute a hash of a local package archive.

    These can be used with --hash in a requirements file to do repeatable
    installs.

    """
    name = 'hash'
    usage = '%prog [options] <file> ...'
    summary = 'Compute hashes of package archives.'

    def __init__(self, *args, **kw):
        super(HashCommand, self).__init__(*args, **kw)
        self.cmd_opts.add_option(
            '-a', '--algorithm',
            dest='algorithm',
            choices=STRONG_HASHES,
            action='store',
            default=FAVORITE_HASH,
            help='The hash algorithm to use: one of %s' %
                 ', '.join(STRONG_HASHES))
        self.parser.insert_option_group(0, self.cmd_opts)

    def run(self, options, args):
        if not args:
            self.parser.print_usage(sys.stderr)
            return ERROR

        algorithm = options.algorithm
        for path in args:
            logger.info('%s:\n--hash=%s:%s',
                        path, algorithm, _hash_of_file(path, algorithm))


def _hash_of_file(path, algorithm):
    """Return the hash digest of a file."""
    with open(path, 'rb') as archive:
        hash = hashlib.new(algorithm)
        for chunk in read_chunks(archive):
            hash.update(chunk)
    return hash.hexdigest()

Directory Contents

Dirs: 0 × Files: 39

Name Size Perms Modified Actions
1.35 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
1.56 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
1.56 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.40 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
2.83 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.83 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
7.63 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
6.03 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
6.03 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.77 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
3.12 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
3.12 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
1.56 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
2.35 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.35 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
982 B lrw-r--r-- 2022-04-21 18:08:21
Edit Download
1.32 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
1.32 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
17.86 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
11.81 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
11.81 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
11.10 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
10.88 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
10.83 KB lrw-r--r-- 2022-04-21 18:08:36
Edit Download
4.40 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
4.84 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
4.84 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
5.75 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
5.61 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
5.61 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.82 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
2.97 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.97 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
7.55 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
6.22 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
6.22 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.19 KB lrw-r--r-- 2022-04-21 18:08:21
Edit Download
2.57 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download
2.57 KB lrw-r--r-- 2022-04-21 18:08:35
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).