From d7ba0ad12596b92252218efe8bddb357a100eace Mon Sep 17 00:00:00 2001 From: JarbasAI <33701864+JarbasAl@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:36:01 +0100 Subject: [PATCH] setup.py template (#3) * setup.py template * reqs --- MANIFEST.in | 6 +++++ requirements.txt | 4 +-- setup.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ version.py | 1 + 4 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 MANIFEST.in create mode 100755 setup.py create mode 100644 version.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..bb58308 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,6 @@ +recursive-include dialog * +recursive-include vocab * +recursive-include locale * +recursive-include res * +recursive-include ui * +recursive-include skill * \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8c7fe83..dea693c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -pytz==2022.1 +pytz>=2022.1 tzlocal==1.3 timezonefinder geocoder -holidays==0.12 +holidays~=0.12 diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..a4985cb --- /dev/null +++ b/setup.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +from setuptools import setup + +URL = "https://github.com/OpenVoiceOS/skill-ovos-date-time" +SKILL_CLAZZ = "TimeSkill" # needs to match __init__.py class name +PYPI_NAME = "ovos-skill-date-time" # pip install PYPI_NAME + + +# below derived from github url to ensure standard skill_id +SKILL_AUTHOR, SKILL_NAME = URL.split(".com/")[-1].split("/") +SKILL_PKG = SKILL_NAME.lower().replace('-', '_') +PLUGIN_ENTRY_POINT = f'{SKILL_NAME.lower()}.{SKILL_AUTHOR.lower()}={SKILL_PKG}:{SKILL_CLAZZ}' +# skill_id=package_name:SkillClass + + +def get_requirements(requirements_filename: str): + requirements_file = path.join(path.abspath(path.dirname(__file__)), + requirements_filename) + with open(requirements_file, 'r', encoding='utf-8') as r: + requirements = r.readlines() + requirements = [r.strip() for r in requirements if r.strip() + and not r.strip().startswith("#")] + if 'MYCROFT_LOOSE_REQUIREMENTS' in os.environ: + print('USING LOOSE REQUIREMENTS!') + requirements = [r.replace('==', '>=').replace('~=', '>=') for r in requirements] + return requirements + + +def find_resource_files(): + resource_base_dirs = ("locale", "ui", "vocab", "dialog", "regex", "skill") + base_dir = path.dirname(__file__) + package_data = ["*.json"] + for res in resource_base_dirs: + if path.isdir(path.join(base_dir, res)): + for (directory, _, files) in walk(path.join(base_dir, res)): + if files: + package_data.append( + path.join(directory.replace(base_dir, "").lstrip('/'), + '*')) + return package_data + + +with open("README.md", "r") as f: + long_description = f.read() + +with open("./version.py", "r", encoding="utf-8") as v: + for line in v.readlines(): + if line.startswith("__version__"): + if '"' in line: + version = line.split('"')[1] + else: + version = line.split("'")[1] + + +setup( + name=PYPI_NAME, + version=version, + description='ovos skill plugin', + long_description=long_description, + url=URL, + author=SKILL_AUTHOR, + license='Apache-2.0', + package_dir={SKILL_PKG: ""}, + package_data={SKILL_PKG: find_resource_files()}, + packages=[SKILL_PKG], + include_package_data=True, + install_requires=get_requirements("requirements.txt"), + keywords='ovos skill plugin', + entry_points={'ovos.plugin.skill': PLUGIN_ENTRY_POINT} +) diff --git a/version.py b/version.py new file mode 100644 index 0000000..b8023d8 --- /dev/null +++ b/version.py @@ -0,0 +1 @@ +__version__ = '0.0.1'