|
|
|
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): |
|
parent_package = meta.get('parent_package', 'spacy') |
|
requirements = [parent_package + meta['spacy_version']] |
|
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() |
|
|