mirror of
https://github.com/kennethreitz/maya.git
synced 2026-06-05 14:50:19 +00:00
93 lines
2.8 KiB
Python
93 lines
2.8 KiB
Python
import codecs
|
|
import os
|
|
import re
|
|
|
|
from setuptools import find_packages, setup
|
|
|
|
#: Holds a list of packages to install with the binary distribution
|
|
PACKAGES = find_packages(where="src")
|
|
META_FILE = os.path.abspath("src/maya/__init__.py")
|
|
KEYWORDS = ["datetime", "timezone", "scrape", "web"]
|
|
CLASSIFIERS = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Natural Language :: English",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 2",
|
|
"Programming Language :: Python :: 2.7",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: Implementation",
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
]
|
|
|
|
#: Holds the runtime requirements for the end user
|
|
INSTALL_REQUIRES = [
|
|
"humanize",
|
|
"pytz",
|
|
"dateparser>=0.7.0",
|
|
"tzlocal",
|
|
"pendulum>=2.0.2",
|
|
"snaptime",
|
|
]
|
|
#: Holds runtime requirements and development requirements
|
|
EXTRAS_REQUIRES = {
|
|
# extras for contributors
|
|
"docs": ["sphinx"],
|
|
"tests": ["freezegun", "coverage", "pytest", "pytest-mock"],
|
|
}
|
|
EXTRAS_REQUIRES["dev"] = (
|
|
EXTRAS_REQUIRES["tests"] + EXTRAS_REQUIRES["docs"] + ["pre-commit"]
|
|
)
|
|
|
|
#: Holds the contents of the README file
|
|
with codecs.open("README.rst", encoding="utf-8") as readme:
|
|
__README_CONTENTS__ = readme.read()
|
|
|
|
|
|
def read(metafile):
|
|
"""
|
|
Return the contents of the given meta data file assuming UTF-8 encoding.
|
|
"""
|
|
with codecs.open(str(metafile), encoding="utf-8") as f:
|
|
return f.read()
|
|
|
|
|
|
def get_meta(meta, metafile):
|
|
"""
|
|
Extract __*meta*__ from the given metafile.
|
|
"""
|
|
contents = read(metafile)
|
|
meta_match = re.search(
|
|
r"^__{meta}__ = ['\"]([^'\"]*)['\"]".format(meta=meta), contents, re.M
|
|
)
|
|
if meta_match:
|
|
return meta_match.group(1)
|
|
raise RuntimeError("Unable to find __{meta}__ string.".format(meta=meta))
|
|
|
|
|
|
setup(
|
|
name="maya",
|
|
version=get_meta("version", META_FILE),
|
|
license=get_meta("license", META_FILE),
|
|
description=get_meta("description", META_FILE),
|
|
long_description=__README_CONTENTS__,
|
|
author=get_meta("author", META_FILE),
|
|
author_email=get_meta("author_email", META_FILE),
|
|
maintainer=get_meta("author", META_FILE),
|
|
maintainer_email=get_meta("author_email", META_FILE),
|
|
platforms=["Linux", "Windows", "MAC OS X"],
|
|
url=get_meta("url", META_FILE),
|
|
download_url=get_meta("download_url", META_FILE),
|
|
bugtrack_url=get_meta("bugtrack_url", META_FILE),
|
|
packages=PACKAGES,
|
|
package_dir={"": "src"},
|
|
include_package_data=True,
|
|
install_requires=INSTALL_REQUIRES,
|
|
extras_require=EXTRAS_REQUIRES,
|
|
keywords=KEYWORDS,
|
|
classifiers=CLASSIFIERS,
|
|
)
|