123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import os
- import os.path as osp
- import glob
- import shutil
- import subprocess
- from setuptools import find_packages, setup
- # ============== version definition ==============
- PPDET_VERSION = "2.4.0"
- def parse_version():
- return PPDET_VERSION.replace('-', '')
- def git_commit():
- try:
- cmd = ['git', 'rev-parse', 'HEAD']
- git_commit = subprocess.Popen(
- cmd,
- stdout=subprocess.PIPE, ).communicate()[0].strip()
- git_commit = git_commit.decode()
- except:
- git_commit = 'Unknown'
- return str(git_commit)
- def write_version_py(filename='ppdet/version.py'):
- ver_str = """# THIS FILE IS GENERATED FROM PADDLEPADDLE SETUP.PY
- #
- full_version = '%(version)s'
- commit = '%(commit)s'
- """
- _git_commit = git_commit()
- with open(filename, 'w') as f:
- f.write(ver_str % {'version': PPDET_VERSION, 'commit': _git_commit})
- write_version_py()
- # ============== version definition ==============
- def readme():
- with open('README.md', encoding='utf-8') as f:
- content = f.read()
- return content
- def parse_requirements(fname):
- with open(fname, encoding="utf-8-sig") as f:
- requirements = f.readlines()
- return requirements
- def package_model_zoo():
- cur_dir = osp.dirname(osp.realpath(__file__))
- cfg_dir = osp.join(cur_dir, "configs")
- cfgs = glob.glob(osp.join(cfg_dir, '*/*.yml'))
- valid_cfgs = []
- for cfg in cfgs:
- # exclude dataset base config
- if osp.split(osp.split(cfg)[0])[1] not in ['datasets']:
- valid_cfgs.append(cfg)
- model_names = [
- osp.relpath(cfg, cfg_dir).replace(".yml", "") for cfg in valid_cfgs
- ]
- model_zoo_file = osp.join(cur_dir, 'ppdet', 'model_zoo', 'MODEL_ZOO')
- with open(model_zoo_file, 'w') as wf:
- for model_name in model_names:
- wf.write("{}\n".format(model_name))
- return [model_zoo_file]
- packages = [
- 'ppdet',
- 'ppdet.core',
- 'ppdet.data',
- 'ppdet.engine',
- 'ppdet.metrics',
- 'ppdet.modeling',
- 'ppdet.model_zoo',
- 'ppdet.slim',
- 'ppdet.utils',
- ]
- if __name__ == "__main__":
- setup(
- name='paddledet',
- packages=find_packages(exclude=("configs", "tools", "deploy")),
- package_data={'ppdet.model_zoo': package_model_zoo()},
- author='PaddlePaddle',
- version=parse_version(),
- install_requires=parse_requirements('./requirements.txt'),
- description='Object detection and instance segmentation toolkit based on PaddlePaddle',
- long_description=readme(),
- long_description_content_type='text/markdown',
- url='https://github.com/PaddlePaddle/PaddleDetection',
- download_url='https://github.com/PaddlePaddle/PaddleDetection.git',
- keywords=['ppdet paddle ppyolo'],
- classifiers=[
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: Apache Software License',
- 'Operating System :: OS Independent',
- 'Natural Language :: Chinese (Simplified)',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8', 'Topic :: Utilities'
- ],
- license='Apache License 2.0',
- ext_modules=[])
|