diff --git a/MANIFEST.in b/MANIFEST.in index 9561fb1..6464c08 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1,2 @@ include README.rst +include pytimeparse/VERSION diff --git a/pytimeparse/VERSION b/pytimeparse/VERSION new file mode 100644 index 0000000..45a1b3f --- /dev/null +++ b/pytimeparse/VERSION @@ -0,0 +1 @@ +1.1.2 diff --git a/pytimeparse/__init__.py b/pytimeparse/__init__.py index 29f262b..43efa8d 100644 --- a/pytimeparse/__init__.py +++ b/pytimeparse/__init__.py @@ -7,3 +7,22 @@ __init__.py `timeparse` module. ''' + +from __future__ import absolute_import +from codecs import open +from os import path + +# Version. For each new release, the version number should be updated +# in the file VERSION. +try: + # If a VERSION file exists, use it! + with open(path.join(path.dirname(__file__), 'VERSION'), + encoding='utf-8') as infile: + __version__ = infile.read().strip() +except NameError: + __version__ = 'unknown (running code interactively?)' +except IOError as ex: + __version__ = "unknown (%s)" % ex + +# import top-level functionality +from .timeparse import timeparse diff --git a/setup.py b/setup.py index c4e1a50..5bbabae 100644 --- a/setup.py +++ b/setup.py @@ -8,29 +8,112 @@ setup.py distutils setup script for pytimeparse. ''' -try: - from setuptools import setup -except ImportError: - from distutils.core import setup +from setuptools import setup, find_packages # Always prefer setuptools over distutils +from codecs import open # To use a consistent encoding +from os import path import sys -with open('README.rst') as file: - LONG_DESCRIPTION = file.read() +HERE = path.abspath(path.dirname(__file__)) + +with open(path.join(HERE, 'pytimeparse', 'VERSION'), encoding='utf-8') as f: + VERSION = f.read().strip() + +# Get the long description from the relevant file +with open(path.join(HERE, 'README.rst'), encoding='utf-8') as f: + LONG_DESCRIPTION = f.read() # http://stackoverflow.com/a/19719657/1062499 -if sys.version_info[0] == 2: - INSTALL_REQUIRES = ['future'] -elif sys.version_info[0] == 3: - INSTALL_REQUIRES = [] +INSTALL_REQUIRES = [] +if sys.version_info.major < 3: + INSTALL_REQUIRES.append('future') -setup(name = 'pytimeparse', - version = '1.1.2', - description = 'Time expression parser', - author = 'Will Roberts', - author_email = 'wildwilhelm@gmail.com', - url = 'https://github.com/wroberts/pytimeparse', - packages = ['pytimeparse'], - license = 'MIT', - install_requires = INSTALL_REQUIRES, - long_description = LONG_DESCRIPTION, +setup( + name='pytimeparse', + + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # https://packaging.python.org/en/latest/single_source_version.html + version=VERSION, + + description='Time expression parser', + long_description=LONG_DESCRIPTION, + + # The project's main homepage. + url='https://github.com/wroberts/pytimeparse', + + # Author details + author='Will Roberts', + author_email='wildwilhelm@gmail.com', + + # Choose your license + license='MIT', + + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + 'Development Status :: 4 - Beta', + + # Indicate who your project is intended for + 'Intended Audience :: Developers', + 'Topic :: Text Processing', + 'Natural Language :: English', + + # Pick your license as you wish (should match "license" above) + 'License :: OSI Approved :: MIT License', + + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.2', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + ], + + # What does your project relate to? + keywords='time parsing parser', + + # You can just specify the packages manually here if your project is + # simple. Or you can use find_packages(). + packages=find_packages(exclude=[]), + + # List run-time dependencies here. These will be installed by pip when your + # project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=INSTALL_REQUIRES, + + # List additional groups of dependencies here (e.g. development dependencies). + # You can install these using the following syntax, for example: + # $ pip install -e .[dev,test] + #extras_require = { + # 'dev': ['check-manifest'], + # 'test': ['coverage'], + #}, + + # If there are data files included in your packages that need to be + # installed, specify them here. If using Python 2.6 or less, then these + # have to be included in MANIFEST.in as well. + package_data={ + 'pytimeparse': ['VERSION'], + }, + + # Although 'package_data' is the preferred approach, in some case you may + # need to place data files outside of your packages. + # see http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files + # In this case, 'data_file' will be installed into '/my_data' + #data_files=[('my_data', ['data/data_file'])], + + # To provide executable scripts, use entry points in preference to the + # "scripts" keyword. Entry points provide cross-platform support and allow + # pip to create the appropriate form of executable for the target platform. + #entry_points={ + # 'console_scripts': [ + # 'sample=sample:main', + # ], + #}, )