CoolFace
Apppublic

CCCasEEE/internlm_lagent

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
setup.py109 linesDownload Raw Back to root
1from pathlib import Path2from setuptools import find_packages, setup3 4 5def get_version():6    version_file = 'lagent/version.py'7    with open(version_file, encoding='utf-8') as f:8        exec(compile(f.read(), version_file, 'exec'))9    return locals()['__version__']10 11 12def parse_requirements(fname='requirements.txt', with_version=True):13    """Parse the package dependencies listed in a requirements file but strip14    specific version information.15 16    Args:17        fname (str): Path to requirements file.18        with_version (bool, default=False): If True, include version specs.19    Returns:20        info (list[str]): List of requirements items.21    CommandLine:22        python -c "import setup; print(setup.parse_requirements())"23    """24    import re25    import sys26    from os.path import exists27 28    require_fpath = fname29 30    def parse_line(line):31        """Parse information from a line in a requirements text file."""32        if line.startswith('-r '):33            # Allow specifying requirements in other files34            target = line.split(' ')[1]35            for info in parse_require_file(target):36                yield info37        else:38            info = {'line': line}39            if line.startswith('-e '):40                info['package'] = line.split('#egg=')[1]41            else:42                # Remove versioning from the package43                pat = '(' + '|'.join(['>=', '==', '>']) + ')'44                parts = re.split(pat, line, maxsplit=1)45                parts = [p.strip() for p in parts]46 47                info['package'] = parts[0]48                if len(parts) > 1:49                    op, rest = parts[1:]50                    if ';' in rest:51                        # Handle platform specific dependencies52                        # http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies53                        version, platform_deps = map(str.strip,54                                                     rest.split(';'))55                        info['platform_deps'] = platform_deps56                    else:57                        version = rest  # NOQA58                    info['version'] = (op, version)59            yield info60 61    def parse_require_file(fpath):62        with open(fpath) as f:63            for line in f.readlines():64                line = line.strip()65                if line and not line.startswith('#'):66                    yield from parse_line(line)67 68    def gen_packages_items():69        if exists(require_fpath):70            for info in parse_require_file(require_fpath):71                parts = [info['package']]72                if with_version and 'version' in info:73                    parts.extend(info['version'])74                if not sys.version.startswith('3.4'):75                    # apparently package_deps are broken in 3.476                    platform_deps = info.get('platform_deps')77                    if platform_deps is not None:78                        parts.append(';' + platform_deps)79                item = ''.join(parts)80                yield item81 82    packages = list(gen_packages_items())83    return packages84 85 86if __name__ == '__main__':87    with Path(Path(__file__).parent,88              'README.md').open(encoding='utf-8') as file:89        long_description = file.read()90 91    setup(92        name='lagent',93        packages=find_packages(),94        include_package_data=True,95        version=get_version(),96        license='Apache 2.0',97        description='A lightweight framework for building LLM-based agents',98        long_description=long_description,99        long_description_content_type='text/markdown',100        data_files=[('.', ['README.md'])],101        keywords=['artificial general intelligence', 'agent', 'agi', 'llm'],102        url='https://github.com/InternLM/lagent',103        install_requires=parse_requirements('requirements/runtime.txt'),104        extras_require={105            'all': parse_requirements('requirements.txt'),106            'optional': parse_requirements('requirements/optional.txt'),107        },108    )109