1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
# -*- coding: utf-8 -*-
# ----------------------------------------------------------------------------
# Copyright (C) British Crown (Met Office) & Contributors.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ----------------------------------------------------------------------------
from importlib.util import spec_from_file_location, module_from_spec
from pathlib import Path
# overriding setuptools command
# https://stackoverflow.com/a/51294311
from setuptools.command.bdist_rpm import bdist_rpm as bdist_rpm_original
# to parse pytest command arguments
# https://docs.pytest.org/en/2.8.7/goodpractices.html#manual-integration
from setuptools.command.test import test as TestCommand
from setuptools import setup, find_namespace_packages
import sys
DIST_DIR = Path(__file__).resolve().parent
def get_version(module, path):
"""Return the __version__ attr from a module sourced by FS path."""
spec = spec_from_file_location(module, path)
module = module_from_spec(spec)
spec.loader.exec_module(module)
return module.__version__
__version__ = get_version(
'metomi.isodatetime',
str(Path(DIST_DIR, 'metomi/isodatetime/__init__.py'))
)
class PyTest(TestCommand):
user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")]
def initialize_options(self):
TestCommand.initialize_options(self)
self.pytest_args = ""
def run_tests(self):
import shlex
# import here, cause outside the eggs aren't loaded
import pytest
errno = pytest.main(shlex.split(self.pytest_args))
sys.exit(errno)
class bdist_rpm(bdist_rpm_original):
def run(self):
"""Before calling the original run method, let's change the
distribution name to create an RPM for python-isodatetime."""
self.distribution.metadata.name = "python-isodatetime"
self.distribution.metadata.version = __version__
super().run()
# Only include pytest-runner in setup_requires if we're invoking tests
if {'pytest', 'test', 'ptr'}.intersection(sys.argv):
setup_requires = ['pytest-runner']
else:
setup_requires = []
setup(
name="metomi-isodatetime",
version='1!' + __version__,
author="Met Office",
author_email="metomi@metoffice.gov.uk",
cmdclass={
"bdist_rpm": bdist_rpm,
"pytest": PyTest
},
description=("Python ISO 8601 date time parser" +
" and data model/manipulation utilities"),
license="LGPLv3",
keywords="isodatetime datetime iso8601 date time parser",
url="https://github.com/metomi/isodatetime",
packages=find_namespace_packages(include=['metomi.*']),
long_description=open(str(Path(DIST_DIR, 'README.md')), 'r').read(),
long_description_content_type="text/markdown",
platforms='any',
setup_requires=setup_requires,
tests_require=['coverage', 'pytest>=5', 'pytest-cov', 'pytest-env'],
install_requires=[],
python_requires='>=3.5',
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Other Environment",
"Intended Audience :: Developers",
("License :: OSI Approved" +
" :: GNU Lesser General Public License v3 (LGPLv3)"),
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Utilities"
],
entry_points={
'console_scripts': ['isodatetime=metomi.isodatetime.main:main'],
},
)
|