Source code for setup

#  Copyright (c) 2021. yoshida-lab. All rights reserved.
#  Use of this source code is governed by a BSD-style
#  license that can be found in the LICENSE file.

# -*- coding: utf-8 -*-

# uncomment this for compatibility with py27
# from __future__ import print_function

import os
from pathlib import Path

from ruamel.yaml import YAML
from setuptools import setup, find_packages

# YOUR PACKAGE NAME
__package__ = 'xenonpy'


[docs]class PackageInfo(object): """ Appendix -------- classifiers: https://pypi.python.org/pypi?%3Aaction=list_classifiers """ def __init__(self, conf_file): yaml = YAML(typ='safe') yaml.indent(mapping=2, sequence=4, offset=2) with open(conf_file, 'r') as f: self._info = yaml.load(f) self.name = __package__
[docs] @staticmethod def requirements(filename="requirements.txt"): """ Return requirements list from a text file. Parameters ---------- filename: str Name of requirement file. Returns ------- str-list """ try: require = list() f = open(filename, "rb") for line in f.read().decode("utf-8").split("\n"): line = line.strip() if "#" in line: line = line[:line.find("#")].strip() if line: require.append(line) except IOError: print("'{}' not found!".format(filename)) require = list() return require
def __getattr__(self, item: str): try: return self._info[item] except KeyError: return None
if __name__ == "__main__": # --- Automatically generate setup parameters --- cwd = Path(__file__).parent / __package__ / 'conf.yml' package = PackageInfo(str(cwd)) # Your package name PKG_NAME = package.name # Your GitHub user name GITHUB_USERNAME = package.github_username # Short description will be the description on PyPI SHORT_DESCRIPTION = package.short_description # GitHub Short Description # Long description will be the body of content on PyPI page LONG_DESCRIPTION = package.long_description # Version number, VERY IMPORTANT! VERSION = package.version + package.release # Author and Maintainer AUTHOR = package.author # Author email AUTHOR_EMAIL = package.author_email MAINTAINER = package.maintainer MAINTAINER_EMAIL = package.maintainer_email PACKAGES, INCLUDE_PACKAGE_DATA, PACKAGE_DATA, PY_MODULES = ( None, None, None, None, ) # It's a directory style package if os.path.exists(__file__[:-8] + PKG_NAME): # Include all sub packages in package directory PACKAGES = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]) # Include everything in package directory INCLUDE_PACKAGE_DATA = True PACKAGE_DATA = { "": ["*.*"], } # It's a single script style package elif os.path.exists(__file__[:-8] + PKG_NAME + ".py"): PY_MODULES = [ PKG_NAME, ] # Project Url GITHUB_URL = "https://github.com/{0}/{1}".format(GITHUB_USERNAME, PKG_NAME) # Use todays date as GitHub release tag RELEASE_TAG = 'v' + VERSION # Source code download url DOWNLOAD_URL = "https://github.com/{0}/{1}/archive/{2}.tar.gz".format(GITHUB_USERNAME, PKG_NAME, RELEASE_TAG) LICENSE = package.license or "'__license__' not found in '%s.__init__.py'!" % PKG_NAME PLATFORMS = [ "Windows", "MacOS", "Unix", ] CLASSIFIERS = [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS", "Operating System :: Unix", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", ] # Read requirements.txt, ignore comments INSTALL_REQUIRES = PackageInfo.requirements() SETUP_REQUIRES = ['pytest-runner', 'ruamel.yaml'] TESTS_REQUIRE = ['pytest'] setup(python_requires='~=3.7', name=PKG_NAME, description=SHORT_DESCRIPTION, long_description=LONG_DESCRIPTION, version=VERSION, author=AUTHOR, author_email=AUTHOR_EMAIL, maintainer=MAINTAINER, maintainer_email=MAINTAINER_EMAIL, packages=PACKAGES, include_package_data=INCLUDE_PACKAGE_DATA, package_data=PACKAGE_DATA, py_modules=PY_MODULES, url=GITHUB_URL, download_url=DOWNLOAD_URL, classifiers=CLASSIFIERS, platforms=PLATFORMS, license=LICENSE, setup_requires=SETUP_REQUIRES, install_requires=INSTALL_REQUIRES, tests_require=TESTS_REQUIRE)