PHP 8.2.30
Preview: pysource.py Size: 3.76 KB
/lib64/python2.7/Tools/scripts/pysource.py

#! /usr/bin/python2.7

"""\
List python source files.

There are three functions to check whether a file is a Python source, listed
here with increasing complexity:

- has_python_ext() checks whether a file name ends in '.py[w]'.
- look_like_python() checks whether the file is not binary and either has
  the '.py[w]' extension or the first line contains the word 'python'.
- can_be_compiled() checks whether the file can be compiled by compile().

The file also must be of appropriate size - not bigger than a megabyte.

walk_python_files() recursively lists all Python files under the given directories.
"""
__author__ = "Oleg Broytmann, Georg Brandl"

__all__ = ["has_python_ext", "looks_like_python", "can_be_compiled", "walk_python_files"]


import os, re

binary_re = re.compile('[\x00-\x08\x0E-\x1F\x7F]')

debug = False

def print_debug(msg):
    if debug: print msg


def _open(fullpath):
    try:
        size = os.stat(fullpath).st_size
    except OSError, err: # Permission denied - ignore the file
        print_debug("%s: permission denied: %s" % (fullpath, err))
        return None

    if size > 1024*1024: # too big
        print_debug("%s: the file is too big: %d bytes" % (fullpath, size))
        return None

    try:
        return open(fullpath, 'rU')
    except IOError, err: # Access denied, or a special file - ignore it
        print_debug("%s: access denied: %s" % (fullpath, err))
        return None

def has_python_ext(fullpath):
    return fullpath.endswith(".py") or fullpath.endswith(".pyw")

def looks_like_python(fullpath):
    infile = _open(fullpath)
    if infile is None:
        return False

    line = infile.readline()
    infile.close()

    if binary_re.search(line):
        # file appears to be binary
        print_debug("%s: appears to be binary" % fullpath)
        return False

    if fullpath.endswith(".py") or fullpath.endswith(".pyw"):
        return True
    elif "python" in line:
        # disguised Python script (e.g. CGI)
        return True

    return False

def can_be_compiled(fullpath):
    infile = _open(fullpath)
    if infile is None:
        return False

    code = infile.read()
    infile.close()

    try:
        compile(code, fullpath, "exec")
    except Exception, err:
        print_debug("%s: cannot compile: %s" % (fullpath, err))
        return False

    return True


def walk_python_files(paths, is_python=looks_like_python, exclude_dirs=None):
    """\
    Recursively yield all Python source files below the given paths.

    paths: a list of files and/or directories to be checked.
    is_python: a function that takes a file name and checks whether it is a
               Python source file
    exclude_dirs: a list of directory base names that should be excluded in
                  the search
    """
    if exclude_dirs is None:
        exclude_dirs=[]

    for path in paths:
        print_debug("testing: %s" % path)
        if os.path.isfile(path):
            if is_python(path):
                yield path
        elif os.path.isdir(path):
            print_debug("    it is a directory")
            for dirpath, dirnames, filenames in os.walk(path):
                for exclude in exclude_dirs:
                    if exclude in dirnames:
                        dirnames.remove(exclude)
                for filename in filenames:
                    fullpath = os.path.join(dirpath, filename)
                    print_debug("testing: %s" % fullpath)
                    if is_python(fullpath):
                        yield fullpath
        else:
            print_debug("    unknown type")


if __name__ == "__main__":
    # Two simple examples/tests
    for fullpath in walk_python_files(['.']):
        print fullpath
    print "----------"
    for fullpath in walk_python_files(['.'], is_python=can_be_compiled):
        print fullpath

Directory Contents

Dirs: 0 × Files: 192

Name Size Perms Modified Actions
4.11 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.64 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.64 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.85 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.60 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.55 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.77 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.77 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
757 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.02 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.02 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.96 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.93 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.93 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.81 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.09 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.09 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
8.38 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
7.22 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
7.19 KB lrw-r--r-- 2024-04-10 04:58:44
Edit Download
4.28 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.16 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.12 KB lrw-r--r-- 2024-04-10 04:58:44
Edit Download
663 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
937 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
937 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
610 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
855 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
855 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.74 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.11 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.11 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.49 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.02 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.33 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.33 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.58 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.18 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.18 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.45 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.83 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.83 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.46 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.22 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.22 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.04 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.39 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.39 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.74 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.39 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
5.54 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.54 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
9.76 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
7.67 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
7.67 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
13.52 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
13.52 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
13.44 KB lrw-r--r-- 2024-04-10 04:58:44
Edit Download
1.16 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.44 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.44 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.98 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.42 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
893 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
969 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
969 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
519 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
792 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
792 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.12 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.22 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.22 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.81 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.29 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.29 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.45 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.82 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.82 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.63 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.21 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.21 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
618 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
880 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
880 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.37 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.98 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.98 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
742 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
942 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
942 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.44 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.96 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.96 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
7.76 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
7.19 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
7.19 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.33 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.85 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.85 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.33 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.03 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.03 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.59 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.93 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.93 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.72 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.77 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.77 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.39 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.89 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.89 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.88 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
4.82 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.82 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.68 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.03 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.03 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
7.50 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
8.91 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
8.91 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
4.23 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.75 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.75 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.84 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.14 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.14 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.85 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.73 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.73 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
16.77 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
11.29 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
11.29 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.20 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.76 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.92 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.92 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.66 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
5.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.13 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
278 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
481 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
481 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
11.15 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
9.40 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
9.37 KB lrw-r--r-- 2024-04-10 04:58:44
Edit Download
1.46 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.84 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.84 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.12 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.56 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.56 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
421 B lrw-r--r-- 2024-04-10 04:58:41
Edit Download
548 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
548 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
621 B lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
904 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
904 B lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.86 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
2.84 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.76 KB lrw-r--r-- 2024-04-10 04:58:44
Edit Download
9.04 KB lrw-r--r-- 2024-04-10 04:58:41
Edit Download
8.18 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
8.18 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
68.19 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
81.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
81.37 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.65 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
5.85 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
5.85 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.19 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.55 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.55 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.59 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
1.59 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.59 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
1.58 KB lrw-r--r-- 2024-04-10 04:58:41
Edit Download
2.02 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.02 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
2.73 KB lrwxr-xr-x 2024-04-10 04:58:41
Edit Download
3.92 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download
3.92 KB lrw-r--r-- 2024-04-10 04:58:46
Edit Download

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