Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python | |
| import io | |
| import json | |
| from os import path, walk | |
| from shutil import copy | |
| from setuptools import setup | |
| def load_meta(fp): | |
| with io.open(fp, encoding='utf8') as f: | |
| return json.load(f) | |
| def load_readme(fp): | |
| if path.exists(fp): | |
| with io.open(fp, encoding='utf8') as f: | |
| return f.read() | |
| return "" | |
| def list_files(data_dir): | |
| output = [] | |
| for root, _, filenames in walk(data_dir): | |
| for filename in filenames: | |
| if not filename.startswith('.'): | |
| output.append(path.join(root, filename)) | |
| output = [path.relpath(p, path.dirname(data_dir)) for p in output] | |
| output.append('meta.json') | |
| return output | |
| def list_requirements(meta): | |
| # Up to version 3.7, we included the parent package | |
| # in requirements by default. This behaviour is removed | |
| # in 3.8, with a setting to include the parent package in | |
| # the requirements list in the meta if desired. | |
| requirements = [] | |
| if 'setup_requires' in meta: | |
| requirements += meta['setup_requires'] | |
| if 'requirements' in meta: | |
| requirements += meta['requirements'] | |
| return requirements | |
| def setup_package(): | |
| root = path.abspath(path.dirname(__file__)) | |
| meta_path = path.join(root, 'meta.json') | |
| meta = load_meta(meta_path) | |
| readme_path = path.join(root, 'README.md') | |
| readme = load_readme(readme_path) | |
| model_name = str(meta['lang'] + '_' + meta['name']) | |
| model_dir = path.join(model_name, model_name + '-' + meta['version']) | |
| copy(meta_path, path.join(model_name)) | |
| copy(meta_path, model_dir) | |
| setup( | |
| name=model_name, | |
| description=meta.get('description'), | |
| long_description=readme, | |
| author=meta.get('author'), | |
| author_email=meta.get('email'), | |
| url=meta.get('url'), | |
| version=meta['version'], | |
| license=meta.get('license'), | |
| packages=[model_name], | |
| package_data={model_name: list_files(model_dir)}, | |
| install_requires=list_requirements(meta), | |
| zip_safe=False, | |
| entry_points={'spacy_models': ['{m} = {m}'.format(m=model_name)]} | |
| ) | |
| if __name__ == '__main__': | |
| setup_package() | |