setup.py (61 lines of code) (raw):

#! /usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2015-2017 Spotify AB # # 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 codecs import os import re from setuptools import find_packages, setup HERE = os.path.abspath(os.path.dirname(__file__)) ##### # Helper functions ##### def read(*filenames, **kwargs): """ Build an absolute path from ``*filenames``, and return contents of resulting file. Defaults to UTF-8 encoding. """ encoding = kwargs.get('encoding', 'utf-8') sep = kwargs.get('sep', '\n') buf = [] for fl in filenames: with codecs.open(os.path.join(HERE, fl), 'rb', encoding) as f: buf.append(f.read()) return sep.join(buf) def find_meta(meta): """Extract __*meta*__ from META_FILE.""" re_str = r"^__{meta}__ = ['\"]([^'\"]*)['\"]".format(meta=meta) meta_match = re.search(re_str, META_FILE, re.M) if meta_match: return meta_match.group(1) raise RuntimeError('Unable to find __{meta}__ string.'.format(meta=meta)) def install_requires(): reqs_txt = read('requirements.txt') parsed = reqs_txt.split('\n') parsed = [r.split('==')[0] for r in parsed] return [r for r in parsed if len(r) > 0] ##### # Project-specific constants ##### NAME = 'shumway' PACKAGES = find_packages(exclude=['tests*']) META_PATH = os.path.join(NAME, '__init__.py') KEYWORDS = ['metrics', 'ffwd', 'heroic'] CLASSIFIERS = [ 'Development Status :: 5 - Production/Stable', 'License :: OSI Approved :: Apache Software License', 'Natural Language :: English', 'Operating System :: POSIX :: Linux', 'Operating System :: MacOS :: MacOS X', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Software Development :: Libraries :: Python Modules', ] META_FILE = read(META_PATH) setup( name=NAME, version=find_meta('version'), license=find_meta('license'), description=find_meta('description'), long_description=open('README.md').read(), long_description_content_type='text/markdown', url=find_meta('uri'), author=find_meta('author'), author_email=find_meta('email'), maintainer=find_meta('author'), maintainer_email=find_meta('email'), packages=PACKAGES, classifiers=CLASSIFIERS, keywords=KEYWORDS, zip_safe=False, install_requires=install_requires() )