-
Notifications
You must be signed in to change notification settings - Fork 3
/
setup.py
104 lines (98 loc) · 3.8 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
#!/usr/bin/env python3
"""Setup file to make eminus installable.
For a full list of options see the documentation:
https://setuptools.pypa.io/en/latest/references/keywords.html
"""
from __future__ import annotations
import pathlib
import re
from setuptools import find_packages, setup
version: str = \
re.search(r"__version__ = '(.*?)'",
pathlib.Path('eminus/version.py').read_text()).group(1) # type: ignore[union-attr]
long_description: str = \
pathlib.Path('README.md').read_text() + '\n\n' + \
pathlib.Path('CHANGELOG.md').read_text().split('\n----\n')[0]
extras: dict[str, list[str]] = {
'dispersion': [
'dftd3>=0.6' # Interface for DFT-D3 dispersion corrections
],
'libxc': [
'pyscf>=2.1' # Libxc interface via PySCF
],
'torch': [
'torch>=1.8' # Faster FFT operators
],
'viewer': [
'nglview>=2.6.5', # Molecule viewer
'plotly>=4.5' # Various visualizations
]
}
extras['fods'] = extras['libxc'] # PyCOM FOD guessing method uses PySCF
extras['symmetry'] = extras['libxc'] # k-point symmetrization uses PySCF
extras['all'] = [dep for values in extras.values() for dep in values]
extras['dev'] = [
'coverage>=4.4', # Generate coverage reports
'furo>=2022.02.14.1', # Documentation theme
'matplotlib>=1.5', # Plotting library for examples
'mypy>=0.931', # Static type checker
'notebook', # Run and convert notebooks to HTML
'pytest>=5.4', # Test utilities
'pytest-cov>=2.6.1', # Collect test coverage data
'ruff>=0.2', # Linter
'sphinx>=4', # Documentation builder
'sphinx-design>=0.2', # More directives for Sphinx
'sphinxcontrib-bibtex>=2' # Use bib files for citations in Sphinx
]
setup(
name='eminus',
version=version,
description='A pythonic plane wave density functional theory (DFT) code.',
long_description=long_description,
long_description_content_type='text/markdown',
author='Wanja Timm Schulze',
author_email='wangenau@protonmail.com',
url='https://github.com/wangenau/eminus',
packages=find_packages(),
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: Education',
'Intended Audience :: Science/Research',
'License :: OSI Approved',
'License :: OSI Approved :: Apache Software License',
'Operating System :: MacOS',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX',
'Operating System :: Unix',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3 :: Only',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Topic :: Education',
'Topic :: Scientific/Engineering',
'Topic :: Scientific/Engineering :: Chemistry',
'Topic :: Scientific/Engineering :: Physics',
'Topic :: Software Development'
],
license='APACHE2.0',
keywords=['Python', 'DFT', 'DFT++'],
include_package_data=True,
install_requires=[
'numpy>=1.17',
'scipy>=1.6'
],
extras_require=extras,
python_requires='>=3.7',
project_urls={
'Bug Tracker': 'https://gitlab.com/wangenau/eminus/-/issues',
'Changelog': 'https://wangenau.gitlab.io/eminus/changelog.html',
'Documentation': 'https://wangenau.gitlab.io/eminus',
'Source code': 'https://gitlab.com/wangenau/eminus'
}
)