Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision 8d273b059c7d48bac95ed4822c853bf4a0289ab5 authored by Ronald Oussoren on 19 February 2008, 15:29:40 UTC, committed by Ronald Oussoren on 19 February 2008, 15:29:40 UTC
upgrade their python2.5 install and then run Python's test suite. This is needed because one of the test files for the decimal module changed it name (see issue 2114) and OSX doesn't feature a full package manager.
1 parent 0821983
Tip revision: 8d273b059c7d48bac95ed4822c853bf4a0289ab5 authored by Ronald Oussoren on 19 February 2008, 15:29:40 UTC
A quick fix that removes a spurious unittest failure when users
A quick fix that removes a spurious unittest failure when users
Tip revision: 8d273b0
glob.py
"""Filename globbing utility."""
import os
import fnmatch
import re
__all__ = ["glob", "iglob"]
def glob(pathname):
"""Return a list of paths matching a pathname pattern.
The pattern may contain simple shell-style wildcards a la fnmatch.
"""
return list(iglob(pathname))
def iglob(pathname):
"""Return a list of paths matching a pathname pattern.
The pattern may contain simple shell-style wildcards a la fnmatch.
"""
if not has_magic(pathname):
if os.path.lexists(pathname):
yield pathname
return
dirname, basename = os.path.split(pathname)
if not dirname:
for name in glob1(os.curdir, basename):
yield name
return
if has_magic(dirname):
dirs = iglob(dirname)
else:
dirs = [dirname]
if has_magic(basename):
glob_in_dir = glob1
else:
glob_in_dir = glob0
for dirname in dirs:
for name in glob_in_dir(dirname, basename):
yield os.path.join(dirname, name)
# These 2 helper functions non-recursively glob inside a literal directory.
# They return a list of basenames. `glob1` accepts a pattern while `glob0`
# takes a literal basename (so it only has to check for its existence).
def glob1(dirname, pattern):
if not dirname:
dirname = os.curdir
try:
names = os.listdir(dirname)
except os.error:
return []
if pattern[0]!='.':
names=filter(lambda x: x[0]!='.',names)
return fnmatch.filter(names,pattern)
def glob0(dirname, basename):
if basename == '':
# `os.path.split()` returns an empty basename for paths ending with a
# directory separator. 'q*x/' should match only directories.
if os.path.isdir(dirname):
return [basename]
else:
if os.path.lexists(os.path.join(dirname, basename)):
return [basename]
return []
magic_check = re.compile('[*?[]')
def has_magic(s):
return magic_check.search(s) is not None
Computing file changes ...