forked from estemendoza/python-ping
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsetup.py
More file actions
executable file
·134 lines (113 loc) · 3.98 KB
/
setup.py
File metadata and controls
executable file
·134 lines (113 loc) · 3.98 KB
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
#!/usr/bin/env python
# coding: utf-8
"""
distutils setup
~~~~~~~~~~~~~~~
:homepage: https://github.com/jedie/python-ping/
:copyleft: 1989-2011 by the python-ping team, see AUTHORS for more details.
:license: GNU GPL v2, see LICENSE for more details.
"""
import os
import subprocess
import sys
import time
import warnings
from setuptools import setup, find_packages, Command
PACKAGE_ROOT = os.path.dirname(os.path.abspath(__file__))
#VERBOSE = True
VERBOSE = False
def _error(msg):
if VERBOSE:
warnings.warn(msg)
return ""
def get_version_from_git():
try:
process = subprocess.Popen(
# %ct: committer date, UNIX timestamp
["/usr/bin/git", "log", "--pretty=format:%ct-%h", "-1", "HEAD"],
shell=False, cwd=PACKAGE_ROOT,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
)
except Exception as err:
return _error("Can't get git hash: %s" % err)
process.wait()
returncode = process.returncode
if returncode != 0:
return _error(
"Can't get git hash, returncode was: %r"
" - git stdout: %r"
" - git stderr: %r" %
(returncode, process.stdout.readline(), process.stderr.readline())
)
output = process.stdout.readline().strip()
try:
raw_timestamp, hash = output.split("-", 1)
timestamp = int(raw_timestamp)
except Exception as err:
return _error("Error in git log output! Output was: %r" % output)
try:
timestamp_formatted = time.strftime("%Y.%m.%d", time.gmtime(timestamp))
except Exception as err:
return _error("can't convert %r to time string: %s" % (timestamp, err))
return "%s.%s" % (timestamp_formatted, hash)
# convert creole to ReSt on-the-fly, see also:
# https://code.google.com/p/python-creole/wiki/UseInSetup
try:
from creole.setup_utils import get_long_description
except ImportError:
if "register" in sys.argv \
or "sdist" in sys.argv \
or "--long-description" in sys.argv:
etype, evalue, etb = sys.exc_info()
evalue = etype("%s - Please install python-creole >= v0.8 - "
"e.g.: pip install python-creole" % evalue)
raise etype, evalue, etb
long_description = None
else:
long_description = get_long_description(PACKAGE_ROOT)
def get_authors():
authors = []
try:
f = file(os.path.join(PACKAGE_ROOT, "AUTHORS"), "r")
for line in f:
if not line.strip().startswith("*"):
continue
if "--" in line:
line = line.split("--", 1)[0]
authors.append(line.strip(" *\r\n"))
f.close()
authors.sort()
except Exception as err:
authors = "[Error: %s]" % err
return authors
setup(
name='python-ping',
version=get_version_from_git(),
description='A pure python ICMP ping implementation using raw sockets.',
long_description=long_description,
author=get_authors(),
maintainer="Jens Diemer",
maintainer_email="python-ping@jensdiemer.de",
url='https://github.com/jedie/python-ping/',
keywords="ping icmp network latency",
packages=find_packages(),
include_package_data=True, # include package data under svn source control
zip_safe=False,
scripts=["ping.py"],
classifiers=[
# http://pypi.python.org/pypi?%3Aaction=list_classifiers
# "Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Networking :: Monitoring",
],
test_suite="tests",
)