forked from webrecorder/pywb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·151 lines (126 loc) · 4.62 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/usr/bin/env python
# vim: set sw=4 et:
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
import glob
import os
import sys
from pywb import __version__
def get_long_description():
with open('README.rst', 'r') as fh:
long_description = fh.read()
return long_description
class PyTest(TestCommand):
user_options = []
def finalize_options(self):
TestCommand.finalize_options(self)
self.test_suite = ' '
def run_tests(self):
from gevent.monkey import patch_all
patch_all()
import pytest
import os
os.environ.pop('PYWB_CONFIG_FILE', None)
cmdline = '--cov-config .coveragerc --cov pywb'
cmdline += ' -v --doctest-modules ./pywb/ tests/'
errcode = pytest.main(cmdline.split(' '))
sys.exit(errcode)
def get_git_short_hash():
import subprocess
try:
hash_id = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).rstrip()
if sys.version_info >= (3, 0):
hash_id = hash_id.decode('utf-8')
return hash_id
except Exception:
return ''
def generate_git_hash_py(pkg, filename='git_hash.py'):
try:
git_hash = get_git_short_hash()
with open(os.path.join(pkg, filename), 'wt') as fh:
fh.write('git_hash = "{0}"\n'.format(git_hash))
except Exception:
pass
def load_requirements(filename):
with open(filename, 'rt') as fh:
requirements = fh.read().rstrip().split('\n')
if sys.version_info > (3, 0):
requirements.append("py3AMF")
else:
requirements.append("pyAMF")
return requirements
def get_package_data():
pkgs = ['static/*.*',
'templates/*',
'*.yaml']
for root, dirs, files in os.walk(os.path.join('pywb', 'static')):
for dir_ in dirs:
pkgs.append(os.path.relpath(os.path.join(root, dir_, '*'), 'pywb'))
return pkgs
generate_git_hash_py('pywb')
setup(
name='pywb',
version=__version__,
url='https://github.com/webrecorder/pywb',
author='Ilya Kreymer',
author_email='[email protected]',
description='Pywb Webrecorder web archive replay and capture tools',
long_description=get_long_description(),
license='GPL',
packages=find_packages(exclude=['tests_disabled']),
zip_safe=False,
package_data={
'pywb': get_package_data(),
},
data_files=[
('sample_archive/cdx', glob.glob('sample_archive/cdx/*')),
('sample_archive/cdxj', glob.glob('sample_archive/cdxj/*')),
('sample_archive/non-surt-cdx', glob.glob('sample_archive/non-surt-cdx/*')),
('sample_archive/zipcdx', glob.glob('sample_archive/zipcdx/*')),
('sample_archive/warcs', glob.glob('sample_archive/warcs/*')),
('sample_archive/text_content',
glob.glob('sample_archive/text_content/*')),
],
install_requires=load_requirements('requirements.txt'),
extras_require={
"i18n": [
"babel",
"translate_toolkit"
],
},
python_requires='>=3.7,<3.12',
tests_require=load_requirements("test_requirements.txt"),
cmdclass={'test': PyTest},
test_suite='',
entry_points="""
[console_scripts]
pywb = pywb.apps.cli:wayback
wayback = pywb.apps.cli:wayback
cdx-server = pywb.apps.cli:cdx_server
live-rewrite-server = pywb.apps.cli:live_rewrite_server
cdx-indexer = pywb.indexer.cdxindexer:main
wb-manager = pywb.manager.manager:main_wrap_exc
warcserver = pywb.apps.cli:warcserver
""",
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'License :: OSI Approved :: GNU General Public License (GPL)',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Programming Language :: Python :: 3',
'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',
'Topic :: Internet :: Proxy Servers',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: WSGI',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Server',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: System :: Archiving',
'Topic :: System :: Archiving :: Backup',
'Topic :: Utilities',
])