forked from Unidata/MetPy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
113 lines (91 loc) · 4.09 KB
/
setup.py
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
# Copyright (c) 2008-2015 MetPy Developers.
# Distributed under the terms of the BSD 3-Clause License.
# SPDX-License-Identifier: BSD-3-Clause
"""Setup script for installing MetPy."""
from __future__ import print_function
import sys
from setuptools import Command, find_packages, setup
import versioneer
class MakeExamples(Command):
"""Create example scripts from IPython notebooks."""
description = __doc__
user_options = []
def initialize_options(self):
"""Initialize command options (unused)."""
pass
def finalize_options(self):
"""Finalize command options (unused)."""
pass
def run(self):
"""Run the command."""
import glob
import os
import os.path
from nbconvert.exporters import python
from traitlets.config import Config
examples_dir = os.path.join(os.path.dirname(__file__), 'examples')
script_dir = os.path.join(examples_dir, 'scripts')
if not os.path.exists(script_dir):
os.makedirs(script_dir)
c = Config({'Exporter': {'template_file': 'examples/python-scripts.tpl'}})
exporter = python.PythonExporter(config=c)
for fname in glob.glob(os.path.join(examples_dir, 'notebooks', '*.ipynb')):
output, _ = exporter.from_filename(fname)
out_fname = os.path.splitext(os.path.basename(fname))[0]
out_name = os.path.join(script_dir, out_fname + '.py')
print(fname, '->', out_name) # noqa: T003
with open(out_name, 'w') as outf:
outf.write(output)
ver = versioneer.get_version()
commands = versioneer.get_cmdclass()
commands.update(examples=MakeExamples)
# Need to conditionally add enum support for older Python
dependencies = ['matplotlib>=1.4', 'numpy>=1.9.1', 'scipy>=0.14', 'pint>=0.6']
if sys.version_info < (3, 4):
dependencies.append('enum34')
setup(
name='MetPy',
version=ver,
description='Collection of tools for reading, visualizing and'
'performing calculations with weather data.',
long_description='The space MetPy aims for is GEMPAK '
'(and maybe NCL)-like functionality, in a way that '
'plugs easily into the existing scientific Python '
'ecosystem (numpy, scipy, matplotlib).',
url='http://github.com/Unidata/MetPy',
author='Ryan May, Patrick Marsh, Sean Arms, Eric Bruning',
author_email='[email protected]',
maintainer='MetPy Developers',
maintainer_email='[email protected]',
license='BSD',
classifiers=['Development Status :: 3 - Alpha',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Scientific/Engineering',
'Intended Audience :: Science/Research',
'Operating System :: OS Independent',
'License :: OSI Approved :: BSD License'],
keywords='meteorology weather',
packages=find_packages(exclude=['doc', 'examples']),
package_data={'metpy.plots': ['colortables/*.tbl', 'nexrad_tables/*.tbl',
'fonts/*.ttf']},
install_requires=dependencies,
extras_require={
'cdm': ['pyproj>=1.9.4'],
'dev': ['ipython[all]>=3.1'],
'doc': ['sphinx>=1.3', 'ipython[all]>=3.1'],
'examples': ['cartopy>=0.13.1'],
'test': ['pytest', 'pytest-runner', 'pytest-mpl', 'pytest-flake8',
'flake8>3.2.0', 'flake8-builtins',
'flake8-comprehensions', 'flake8-copyright',
'flake8-docstrings', 'flake8-import-order', 'flake8-mutable',
'flake8-pep3101', 'flake8-print', 'flake8-quotes',
'pep8-naming']
},
cmdclass=commands,
zip_safe=True,
download_url='https://github.com/Unidata/MetPy/archive/v{}.tar.gz'.format(ver),)