| import io |
| import os |
| import sys |
| import warnings |
| |
| from .distribution import Distribution |
| |
| def _gather_py2(top, candidates): #pragma NO COVER Py3k |
| def _filter(candidates, dirname, fnames): |
| for fname in fnames: |
| fqn = os.path.join(dirname, fname) |
| if os.path.isdir(fqn): |
| if fname == 'EGG-INFO' or fname.endswith('.egg-info'): |
| candidates.append(fqn) |
| os.path.walk(top, _filter, candidates) |
| |
| def _gather_py3(top, candidates): #pragma NO COVER Python2 |
| for dirpath, dirnames, fnames in os.walk(top): |
| for dirname in dirnames: |
| fqn = os.path.join(dirpath, dirname) |
| if dirname == 'EGG-INFO' or dirname.endswith('.egg-info'): |
| candidates.append(fqn) |
| |
| if sys.version_info[0] < 3: #pragma NO COVER Python2 |
| _gather = _gather_py2 |
| else: #pragma NO COVER Py3k |
| _gather = _gather_py3 |
| |
| class Develop(Distribution): |
| |
| def __init__(self, path, metadata_version=None): |
| self.path = os.path.abspath( |
| os.path.normpath( |
| os.path.expanduser(path))) |
| self.metadata_version = metadata_version |
| self.extractMetadata() |
| |
| def read(self): |
| candidates = [self.path] |
| _gather(self.path, candidates) |
| for candidate in candidates: |
| path = os.path.join(candidate, 'PKG-INFO') |
| if os.path.exists(path): |
| with io.open(path, errors='ignore') as f: |
| return f.read() |
| warnings.warn('No PKG-INFO found for path: %s' % self.path) |